如何将初始窗体上选定的值传递到主窗体
本文关键字:窗体 值传 | 更新日期: 2023-09-27 18:31:40
我想在这里做一些类似答案的事情:
如何在不关闭应用程序的情况下关闭登录表单并显示主表单?
。但我想将初始表单上选择的值传递给下一个(主)表单。如果我在主窗体上调用重写的构造函数,则在此期间将值存储在哪里(在被消除的初始窗体和被调用的主窗体之间)?
OTOH,如果我不是使用程序.cs文件来执行此操作,而是在主表单的 Load() 事件中创建"初始表单"(有更好的地方),我可以做这样的事情,但不可否认,它似乎相当笨拙:
0)将主窗体的大小设置为0,0以隐藏它1) 显示"初始"表单/模态对话框,并将用户选择的值(在按钮单击事件中)存储在表单全局变量中2)初始表单/模态对话框关闭后,将主表单的大小设置回应有的大小(除非模态结果<>确定,在这种情况下,我关闭主表单和应用程序)
我知道有更好的方法可以做到这一点...
您不必将值传递给主窗体。就像您的链接所解释的那样,首先打开您的主表单。然后,您的主窗体可以打开另一个窗体。此其他窗体可以将信息放置在主窗体可以访问的公共属性中。由于主窗体控制此其他窗体的生存期,因此主窗体获取保存在其他窗体的公共属性中的信息,然后关闭另一个窗体。
string myVariable;
using (OtherForm otherForm = new OtherForm())
{
otherForm.ShowDialog();
myVariable = otherForm.OtherVariable;
}
尝试使用 ApplicationContext (System.Windows.Forms.ApplicationContext)。您可以显示多个窗体,如以下 MSDN 线程中的示例所示。关于数据,您可以有一个通用的数据对象,该对象创建一次,并且在显示表单之前使用传递给它们的数据对象实例化表单。
http://msdn.microsoft.com/en-us/library/system.windows.forms.applicationcontext%28v=vs.100%29.aspx