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