从另一个表单和类调用公共子 [英] Calling a Public Sub from Another Form and Class

查看:63
本文介绍了从另一个表单和类调用公共子的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好!



我有一个DataGridView在表单1(TasksList)

和表单2上的注册类型有保存按钮应该更新网格。



当我点击保存按钮时,它会保存新记录,但我无法刷新它。



我现在唯一可以做的就是从表格1更新。



表格1



 公共 任务列表
公共 Sub refresh_data()
dgv_all.SuspendLayout()
bs_tasklist.SuspendBinding( )
' 更好地使用OrderBY
bs_tasklist.DataSource = To_DoList.GetInstance.Tasks .OrderBy( Function (x)x.Status)。ToList()
dgv_all.DataSource = Nothing
dgv_all.DataSource = bs_tasklist
bs_tasklist.ResumeBinding()
dgv_all.ResumeLayout()
' 排序失败:(,需要更多研究
' dgv_all.Sort(Status,System.ComponentModel.ListSortDirection.Ascending)
Dim 任务 As TaskItem
Dim 不完整 As 列表( TaskItem)= 列表( TaskItem)
Dim 逾期作为列表( Of TaskItem)= 列表( of Ta skItem)
Dim DateNow 作为 日期 = 日期。现在
对于 i 正如 整数 = 0 dgv_all.Rows.Count - 1
任务= CType (dgv_all.Rows(i) .DataBoundItem,TaskItem)
如果 Tasks.Priority = TaskPriority.High 那么
dgv_all.Rows(i).DefaultCellStyle.ForeColor = Color.Red
ElseIf Tasks.Priority = TaskPriority.Low 然后
dgv_all.Rows(i).DefaultCellStyle.ForeColor = Color.Green
结束 如果
如果 Tasks.Status = TaskStatus。完成然后
dgv_all.Rows(i).DefaultCellStyle.Font = 字体( Me .Font,FontStyle.Strikeout)
Else
Incomplete.Add(Tasks)
结束 如果
如果 Tasks.DateDue< DateNow。日期 然后
Overdue.Add(任务)
结束 如果
下一步
dgv_incomplete .SuspendLayout()
dgv_incomplete.DataSource = Nothing
dgv_incomplete.DataSource = Incomplete
dgv_incomplete.ResumeLayout()

dgv_overdue.SuspendLayout()
dgv_overdue.DataSource = Nothing
dgv_overdue.DataSource =逾期
dgv_overdue.ResumeLayout()
My.Forms.ParentForm.Stats()
结束 Sub



表单2,带保存按钮



 < span class =code-keyword>私有  Sub  btn_taskSave_Click(发件人作为 对象,e 作为 EventArgs)句柄 btn_taskSave.Click 
Dim DateNow 作为 日期 = 日期。现在
如果 tb_name.Text = 字符串 .Empty tb_name.Text = 类型名称此处 然后
MsgBox( 请输入有效名称
否则
如果 chb_completed.Checked = True 该n
Task.Status = TaskStatus.Complete
Else
Task.Status = TaskStatus.Incomplete
结束 如果
Task.Name = tb_name.Text
Task.DateDue = dtp_datedue .Value
Task.Description = rtb_description.Text
如果 rb_high.Checked = True 然后
Task.Priority = TaskPriority.High
ElseIf rb_normal.Checked = True 然后
Task.Priority = TaskPriority.Normal
ElseIf rb_low.Checked = True 然后
Tas k.Priority = TaskPriority.Low
结束 如果
If NewTask = True 然后
Task.DateCreated = DateNow。日期
结束 如果
' woaah它是重复的,if语句可以保存世界
如果 NewTask = False 那么
To_DoList。 GetInstance.Tasks.Remove( Me .Task)
结束 如果
To_DoList.GetInstance.Tasks.Add( Me .Task)
.Close()

结束 如果
结束 Sub

解决方案

http://stackoverflow.com/questions/17949891/calling-public-sub-works-in-some-places-but-not-others-vb- net-2010 [ ^ ]


Hello guys!

I have a DataGridView On form 1 (TasksList)
and kind of Registration on form 2 that have "Save" Button which should update the Grid.

When I am clicking on the save button, it is saves the new record but I Can't refresh it.

The only way I can do it now is updating from the form 1.

Form 1

Public Class TasksList
    Public Sub refresh_data()
        dgv_all.SuspendLayout()
        bs_tasklist.SuspendBinding()
        'Better Using OrderBY
        bs_tasklist.DataSource = To_DoList.GetInstance.Tasks.OrderBy(Function(x) x.Status).ToList()
        dgv_all.DataSource = Nothing
        dgv_all.DataSource = bs_tasklist
        bs_tasklist.ResumeBinding()
        dgv_all.ResumeLayout()
        'Sorting Failed :(, Need more research
        'dgv_all.Sort(Status, System.ComponentModel.ListSortDirection.Ascending)
        Dim Tasks As TaskItem
        Dim Incomplete As List(Of TaskItem) = New List(Of TaskItem)
        Dim Overdue As List(Of TaskItem) = New List(Of TaskItem)
        Dim DateNow As Date = Date.Now
        For i As Integer = 0 To dgv_all.Rows.Count - 1
            Tasks = CType(dgv_all.Rows(i).DataBoundItem, TaskItem)
            If Tasks.Priority = TaskPriority.High Then
                dgv_all.Rows(i).DefaultCellStyle.ForeColor = Color.Red
            ElseIf Tasks.Priority = TaskPriority.Low Then
                dgv_all.Rows(i).DefaultCellStyle.ForeColor = Color.Green
            End If
            If Tasks.Status = TaskStatus.Complete Then
                dgv_all.Rows(i).DefaultCellStyle.Font = New Font(Me.Font, FontStyle.Strikeout)
            Else
                Incomplete.Add(Tasks)
            End If
            If Tasks.DateDue < DateNow.Date Then
                Overdue.Add(Tasks)
            End If
        Next
        dgv_incomplete.SuspendLayout()
        dgv_incomplete.DataSource = Nothing
        dgv_incomplete.DataSource = Incomplete
        dgv_incomplete.ResumeLayout()

        dgv_overdue.SuspendLayout()
        dgv_overdue.DataSource = Nothing
        dgv_overdue.DataSource = Overdue
        dgv_overdue.ResumeLayout()
        My.Forms.ParentForm.Stats()
    End Sub



form 2 with the save button

Private Sub btn_taskSave_Click(sender As Object, e As EventArgs) Handles btn_taskSave.Click
       Dim DateNow As Date = Date.Now
       If tb_name.Text = String.Empty Or tb_name.Text = "Type Name Here" Then
           MsgBox("Please enter valid name")
       Else
           If chb_completed.Checked = True Then
               Task.Status = TaskStatus.Complete
           Else
               Task.Status = TaskStatus.Incomplete
           End If
           Task.Name = tb_name.Text
           Task.DateDue = dtp_datedue.Value
           Task.Description = rtb_description.Text
           If rb_high.Checked = True Then
               Task.Priority = TaskPriority.High
           ElseIf rb_normal.Checked = True Then
               Task.Priority = TaskPriority.Normal
           ElseIf rb_low.Checked = True Then
               Task.Priority = TaskPriority.Low
           End If
           If NewTask = True Then
               Task.DateCreated = DateNow.Date
           End If
           'woaah it's duplicating, if statement saves the world
           If NewTask = False Then
               To_DoList.GetInstance.Tasks.Remove(Me.Task)
           End If
           To_DoList.GetInstance.Tasks.Add(Me.Task)
           Me.Close()

       End If
   End Sub

解决方案

http://stackoverflow.com/questions/17949891/calling-public-sub-works-in-some-places-but-not-others-vb-net-2010[^]


这篇关于从另一个表单和类调用公共子的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆