0

我想在这里做类似答案的事情:

如何在不关闭应用程序的情况下关闭登录表单并显示主表单?

...但我想将初始表单上选择的值传递给下一个(主)表单。如果我在主窗体上调用重写的构造函数,同时我应该在哪里存储值(在初始窗体被解除和主窗体被调用之间)?

OTOH,如果我不使用 program.cs 文件来执行此操作,而是在主窗体的 Load() 事件中创建“初始窗体”(有没有更好的地方),我可以做这样的事情,但不可否认它似乎相当笨拙:

0) 将主窗体的大小设置为 0,0 以将其隐藏 1) 显示“初始”窗体/模式对话框,并将用户选择的值(在按钮单击事件中)存储在窗体全局变量中 2) 一旦初始窗体/模态对话框关闭,将主窗体的大小设置回应有的大小(除非模态结果 <> OK,在这种情况下我关闭主窗体和应用程序)

我知道有更好的方法来做到这一点......

4

2 回答 2

2

您不必将值传递给主窗体。就像您的链接解释的那样,首先打开您的主表单。然后你的主窗体可以打开另一个窗体。这种另一种形式可以将信息放在主窗体可以访问的公共属性中。由于主窗体控制另一个窗体的生命周期,因此主窗体获取保存在另一个窗体的公共属性中的信息,然后关闭另一个窗体。

string myVariable;

using (OtherForm otherForm = new OtherForm())
{
  otherForm.ShowDialog();
  myVariable = otherForm.OtherVariable;
}
于 2012-04-18T23:55:21.543 回答
1

尝试使用 ApplicationContext (System.Windows.Forms.ApplicationContext)。您可以显示多个表单,如以下 MSDN 线程中的示例所示。关于数据,您可以拥有一个创建一次的通用数据对象,并在显示之前使用传递给它们的数据对象对表单进行实例化。

http://msdn.microsoft.com/en-us/library/system.windows.forms.applicationcontext%28v=vs.100%29.aspx

于 2012-04-19T00:01:41.940 回答