以前对 WinForm 窗体显示和窗体间传值了解不是很清楚
最近做了一些 WinForm 开发,把用到的相关知识整理如下
A.WinForm 中窗体显示
显示窗体可以有以下 2 种方法:
Form.ShowDialog 方法 (窗体显示为模式窗体)
Form.Show 方法 (窗体显示为无模式窗体)
2 者具体区别如下:
1.在调用 Form.Show 方法后,Show 方法后面的代码会立即执行
2.在调用 Form.ShowDialog 方法后,直到关闭对话框后,才执行此方法后面的
代码
3.当窗体显示为模式窗体时,单击“关闭”按钮会隐藏窗体,并将 DialogResult
属性设置为 DialogResult.Cancel
与无模式窗体不同,当用户单击对话框的关闭窗体按钮或设置 DialogResult
属性的值时,不调用窗体的 Close 方法
实际上是把窗体的 Visible 属性赋值为 false,隐藏窗体了
这样隐藏的窗体是可以重新显示,而不用创建该对话框的新实例
因为未关闭窗体,所以在应用程序不再需要该窗体时,请调用该窗体的 Dispose
方法
怎么判断一个窗体是模式窗体呢?
利用 Form.Modal 属性,如果该窗体是模式显示,则为 true,否则为 false
根据通过 Show 和 ShowDialog 而显示出来的窗体的 Modal 属性分别对应
false 和 true
特别注意:
由于在窗体创建之前是无法得知显示方式的,所以在窗体构造函数中,Modal 属
性总是对应 false,所以我们只能在 Load 事件中或者之后利用 Modal 属性值
怎么确定窗体间的所有者关系?
Form 类的 Owner 属性:窗体的所有者
当一个窗体归另一窗体所有时,它便随着所有者窗体最小化和关闭。
例如,如果 Form2 归窗体 Form1 所有,则关闭或最小化 Form1 时,Form2
也会关闭或最小化。
例如在窗体 Form1 中
Form2 f2 = new Form2 ( );
f2.ShowDialog ( this );