将值从模态窗体传递给父窗体 VB.NET

4
我将尝试在VB.NET WinForms应用程序中从模态表单传递信息给父级表单。
1.) 我使用以下代码创建了一个窗体的副本并将其显示出来。
dim f=new frmParent()
f.show()

2.) 根据条件,frmParent上的一个按钮会打开一个模态子窗体并询问一些信息。我用了以下代码:

dim f = new ChildForm()
f.showDialog()

两种代码都可以正常工作。当用户在子窗体中按保存按钮时,我需要关闭子窗体并使用用户在父窗体中输入的值。我知道如何关闭子窗体,但不确定如何将信息从子窗体传递给父窗体。


1
你可以在子类上拥有一个公共属性,父类可以像David Steele的示例一样从中读取;你可以将子类传递给主窗体的引用,并让它设置父窗体的属性或调用函数;你可以让父类传递一个引用来保存数据,或者一个Func<>,可以由子类调用以设置数据;你还可以在子窗体上拥有一个事件,父窗体在加载子窗体之前附加到该事件...可能还有其他方法,但这些是我首先想到的。 - shelleybutterfly
1个回答

10

在您的childForm上有一个公共属性

Public Property MyData As MyType

那么当你展示表单时,你可以执行以下操作:

dim f as new ChildForm()

If f.showDialog = DialogResult.OK Then
   Data = f.MyData()
End if

如果您需要允许他们再次编辑该数据,则可能还要考虑将数据传递给对话框的构造函数。


谢谢,它很好用...我以为由于子窗体已经关闭,我们将无法从其属性或变量中获取值... - KoolKabin
2
好消息。在您的窗体变量(在本例中为f)超出范围之前,仍然可以访问表单的公共属性。 - David Steele

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接