我知道这是一个非常讨论的问题,但我没有找到很好的答案。 我有一个包含Form1(DataGridView列表)的实例的MainForm,它具有子窗体Form2(包含从Form1中选择的记录的详细信息)。 Form1可以有多个实例(可以加载到不同的独立选项卡中),Form2可以作为独立表单载入到选项卡中或(作为实例)加载到Form1中作为选定记录的详细信息。VB.NET在子窗体的子窗体(实例)中运行父窗体(实例)
当选择一条记录时(通过定义“Protected f2 As New Form2”,我可以从Form2运行subs),我可以轻松地从Form1刷新Form2。但是,我如何从Form2在Form1中运行一个子?我用Google搜索:
获取父参考像
Dim theParentForm1 As Form = TryCast(Me.Owner, Form) theParentForm1.MyRefreshSub()
...这是有道理的,因为情况总是成对出现。但上面的代码不适用于我,我无法从ParentForm1访问“MyRefreshSub()”。也许我宣布了一些不正确的...
接口 - 我读了很多使用接口的建议,但我没有找到一个使用接口刷新父窗体的单例!
有人能指点我一个解决方案吗?
问候,
Libor的
你的问题很混乱。标题询问一件事,然后'我如何从Form2运行Form1中的一个子'似乎想要相反。也就是说,'Dim theParentForm1 As Form = TryCast(Me.Owner,Form)'不会有太大帮助,因为在System.Windows.Forms.Form中没有定义MyRefreshSub。尝试使用'Form1'或其他类实际上拥有该方法的方式进行投射。 – Plutonix 2014-10-20 12:04:00
谢谢,但这不起作用,我会写在下面的答案下描述它 – 2014-10-20 13:18:00
我怀疑这是一个XY问题开始。我强烈怀疑你的子表单的概念是将表单嵌入到TabPage中,如果是这种情况,你可能会提到这一点,因为这是一件很奇怪的事情。否则,你将不得不扩大“这不工作”。如果'MyrefreshSub'是Public并且'thisForm'被转换为包含它的form类的一个实例,那么'thisForm.MyRefreshSub'应该可以工作。 – Plutonix 2014-10-20 13:46:15