VB.NET重新加载活动停靠窗体

VB.NET重新加载活动停靠窗体,vb.net,winforms,refresh,page-refresh,Vb.net,Winforms,Refresh,Page Refresh,我希望你能帮忙,因为这个小问题真的很让人头疼,经过长时间的研究,我还没有找到可行的解决办法 我的程序使用员工工资号码从数据库中检索数据,几乎所有表单都使用Weifenlo进行对接。当工资号码更改时,它会用新信息清除数据集,但我们不希望用户必须手动关闭所有打开的停靠窗口-实际上,每个打开的窗口都需要用新员工信息刷新。我尝试了.referesh(),.invalidate()——这似乎不会在每个组合框/文本框中重新加载数据 经过大量研究,我尝试了以下方法: Private Sub tbPayNumb

我希望你能帮忙,因为这个小问题真的很让人头疼,经过长时间的研究,我还没有找到可行的解决办法

我的程序使用员工工资号码从数据库中检索数据,几乎所有表单都使用Weifenlo进行对接。当工资号码更改时,它会用新信息清除数据集,但我们不希望用户必须手动关闭所有打开的停靠窗口-实际上,每个打开的窗口都需要用新员工信息刷新。我尝试了
.referesh()
.invalidate()
——这似乎不会在每个组合框/文本框中重新加载数据

经过大量研究,我尝试了以下方法:

Private Sub tbPayNumber_KeyDown(sender As Object, e As KeyEventArgs) Handles tbPayNumber.KeyDown

    If e.KeyCode = Keys.Enter Then
        Call Paynumber_Authentication()

            'close and re-open any active forms
            Dim table As New DataTable
            table.Columns.Add("Forms", GetType(Form))

            For Each frm As Form In MdiChildren 
                table.Rows.Add(frm)
            Next

            For i = MdiChildren.Length - 1 To 0 Step -1 
                MdiChildren(i).Close()
            Next

            For i As Integer = 0 To table.Rows.Count - 1
            Dim ResetForms = table.Rows(i)("Forms")
                ResetForms.Show(pnlDockMain, DockState.Document)
            Next

    End If

End Sub
如果我像上面那样运行代码,就会出现恼人的MS设计错误“无法访问已处理的对象”

如果我将代码的最后一部分更改为:

For i As Integer = 0 To table.Rows.Count - 1
      Dim ResetForms As New Form
          ResetForms = table.Rows(i)("Forms")
          ResetForms.Show(pnlDockMain, DockState.Document)
Next
我在
ResetForms.Show
行上得到informous重载解析错误-参数太多

值得一提的是,当表单打开时,每个表单都将获得它所需的任何信息,这些信息可以正常工作。如果能帮我重新加载每个表单,我将不胜感激,因为我能想到的唯一其他方法是列出每个表单上的每个文本框(超过30个表单),并单独或手动为它们提供新值。很多人都在谈论这个问题,比如
.IsDisposed
方法等等,所以我希望你能找到一个优雅的解决方案


提前感谢,Shane

我现在已经找到了一个有效的解决方案-它不是很优雅,所以如果您有任何改进,请发布。
Private Sub tbPayNumber_KeyDown(sender As Object, e As KeyEventArgs) Handles tbPayNumber.KeyDown

If e.KeyCode = Keys.Enter Then
    Call Paynumber_Authentication()
    Call Load_Employee()

        'close and re-open any active forms
        Dim table As New DataTable
    table.Columns.Add("Forms", GetType(String))

    For Each frm As Form In MdiChildren 'load the name of each open form into a dataset
        table.Rows.Add(frm.Name)
    Next

    For i = MdiChildren.Length - 1 To 0 Step -1 'closes all open docked windows
        MdiChildren(i).Close()


    Next

    For i As Integer = 0 To table.Rows.Count - 1

        Select Case table.Rows(i)("Forms")
            Case "EmployeeDetails"
                Dim LoadForm As New EmployeeDetails
                EmployeeDetails.Show(pnlDockMain, DockState.Document)
            Case "HomePage"
                Dim LoadForm As New HomePage
                HomePage.Show(pnlDockMain, DockState.Document)
            Case "SOEInput"
                Dim LoadForm As New SOEInput
                SOEInput.Show(pnlDockMain, DockState.Document)
        End Select

    Next

End If

End Sub