形式:
//button1,显示一个模式对话框
private void button1_Click(object sender, System.EventArgs e)
{
Form form = new Form2( );
form.ShowDialog( );
}
//button2,显示一个非模式对话框
private void button2_Click(object sender, System.EventArgs e)
{
Form form = new Form2( );
form.Show( );
}
区别:
- 返回值不同,模式窗体:
DialogResult = System.Windows.Forms.DialogResult.OK
;非模式窗体:void。 - 模式窗体会使程序中断,直到关闭模式窗口,否则不能切换到应用程序的其他窗体;如同记事本里面的"打开"功能。
- 非模式窗体的父窗体还可以获得焦点;如同记事本里面的"查找"功能。
- show出来的窗体,在单击关闭时,窗体就会被注销掉,不存在内存中。
- showdialog只是hide掉窗体,没有把窗体从内存只注销,所以窗体内的成员也不会消失,当再次调用的话,原来窗体成员的数据会保留下来。如果想注销掉showdialog的窗体可以调用窗体对象的Dispose来完成。