显现窗体能够有以下2种要领:
Form.ShowDialog要领 (窗体显现为形式窗体)
Form.Show要领 (窗体显现为无形式窗体)
二者详细区分以下:
1.在挪用Form.Show要领后,Show要领背面的代码会马上实行
2.在挪用Form.ShowDialog要领后,直到封闭对话框后,才实行此要领背面的代码
小注:
1、模态显现后,
弹出窗口阻挠挪用窗口的一切音讯相应。
只要在弹出窗口完毕后挪用窗口才继承。
在模态窗口“封闭”后,能够读取模态窗口中信息,包含窗口的返回状况,窗口儿控件的值。
MSDN上对showdialog的诠释:
当窗体显现为形式对话框时,单击“封闭”按钮(窗体右上角带 X 的按钮)会隐蔽窗体并将 DialogResult 属性设置为 DialogResult.Cancel。与无形式窗体差别,当用户单击对话框的封闭窗体按钮或设置 DialogResult 属性的值时,.NET Framework 不挪用 Close 要领。窗体转而能够隐蔽并可从新显现,而不必建立该对话框的新实例。由于未封闭显现为对话框的窗体,所以在您的应用程序不再须要该窗体时,必需挪用该窗体的 Dispose 要领。
也就是说,非模态窗口在封闭时,会挪用close要领,进而挪用dispose要领,将窗口资本举行接纳,所以窗口封闭后,不能在猎取窗口信息。模态窗口在封闭时,不会挪用close要领,也不挪用dispose要领,窗口依然存在,占领资本,所以能够继承取得窗口相干信息,在窗口不再运用时,须要手动开释
2、非模态显现后,
能够在弹出窗口和挪用窗口之间随便切换。
挪用窗口挪用show要领后,下面的代码能够马上实行。
在非模态窗口封闭后,窗口的一切资本被开释,窗口不存在,没法猎取窗口的任何信息。
3、故当要show的窗体运用单例形式时,每次show完,close()窗体后,在第二次show的时刻会涌现:没法访问已开释的对象。对象名:“XXXX”。 此时,应当将close()修改成窗体隐蔽。
以上就是C# Show()与ShowDialog()的区分的内容,更多相干内容请关注ki4网(www.ki4.cn)!