C#中WinForm切换问题
在一个项目中往往有多个Form,在Program.cs中指定了第一个窗体:
1 Application.Run(new MainForm());
记得在大学时候,曾经用C#写过《软件工程》项目,也是由多个窗体构成的,需要在主窗体和其他窗体之间切换。当时构想的用例是这样的,在第一个窗体中调用子窗体之后,隐藏主窗体,因此有:
1 private void elementToolStripMenuItem_Click(object sender, System.EventArgs e)
2 {
3 ElementForm elementForm = new ElementForm();
4 elementForm.Show();
5 this.Hide();
6 }
但当第二个窗体关闭,需要重新显示主窗体时候,怎么办,有几种办法?这似乎是一道不错的面试考题:
1 将this作为构造函数参数传给子窗体;
2 在主窗体类中保存static属性的自身实例(想起工厂模式);
3 给子窗体实例的ClosedEvent添加内容为this.show()的处理函数
仔细想想,为什么非得将主窗体隐藏?如果只是想在子窗体返回之前禁用父窗体,可以用showdialog()(完全没有想到这个函数,然而这个函数应该是C#教程的标配,可见系统学习的重要,不要以为能通过google和MSDN查接口就轻易说自己掌握一门语言)。