【发布时间】:2013-08-21 20:09:40
【问题描述】:
我正在使用 WinForm 应用程序。我有几个表格。我希望能够从任何子表单访问我的主表单。我能够通过自定义按钮功能做到这一点并捕获 Form_Closing 事件。我有一个问题,我将在下面解释。
主窗体代码如下:
ChildForm form = new ChildForm(); // Create new Child Form instance
form.Show(); // Show Child form
this.Hide(); // Hide Main form
使用“this.Hide();”意味着主窗体仍然存在于内存中并且仍在工作,它只是隐藏了这就是我想要的。
子窗体上的代码
MainForm form = new MainForm(); // Create new Main Form instance
form.Show(); // Show Main Form
this.Close(); // Close Child Form
这一切都很好,除了我的第二个代码块(直接在上面的子表单),第一行代码创建了主表单的新实例。那是我的问题,我不想创建该表单的新实例,我想显示已经存在的隐藏实例(我在上面的第一个代码块中隐藏的主表单)。
我在子表单上尝试了以下代码:
this.Parent.Show();
但是我收到了这个运行时错误消息: “System.NullReferenceException 未处理:Message=Object 引用未设置为对象的实例”。
我理解错误的含义,我只是没有创建对该主窗体的对象引用或如何以任何方式引用它的代码。
有什么建议吗?
先谢谢了。
【问题讨论】:
-
通过构造函数
form2(IWin32Window parent)传递表单引用