我知道这是一个非常讨论的问题,但我没有找到好的答案。 我有一个包含Form1(DataGridView列表)实例的MainForm,它有一个子表单Form2(包含Form1中所选记录的详细信息)。 Form1可以有多个实例(可以加载到不同的独立选项卡中),Form2可以作为独立的表单加载到选项卡中,或者(在这种情况下)作为选定记录的详细信息加载到Form1中。
我可以在选择记录时轻松刷新Form1中的Form2(通过定义"受保护的f2作为新Form2"我可以从Form2运行subs)。但是如何从Form2运行Form1中的子?我用Google搜索:
获取
之类的父参考Dim theParentForm1 As Form = TryCast(Me.Owner, Form)
theParentForm1.MyRefreshSub()
...这是有道理的,因为实例总是配对的。但上面的代码对我来说不起作用,我无法访问" MyRefreshSub()"来自theParentForm1。也许我宣布了一些不正确的事情......
界面 - 我阅读了很多使用界面的建议,但我没有找到使用界面刷新父表单的单一示例!
< / LI> 醇>有人能指出我的解决方案吗?
此致
Libor的
答案 0 :(得分:0)
你可以发布@Plutonix发布并将父表单转换为Form1并调用sub
Dim myParentForm As Form1 = TryCast(Me.Owner, Form1)
myParentForm.nameOfSubToRun()
答案 1 :(得分:0)
好的,根据Plutonix提出的建议,我走了另一个方向并决定解决方法 - 更新Form1的所有实例。它的工作原理如下:
For Each CurrentForm As Form In Application.OpenForms
If CurrentForm.Name = "Form1" Then
Dim Form1Instance As Form1 = DirectCast(CurrentForm, Form1)
Form1Instance.nameOfSubToRun()
End If
Next