Form.Show()与Form.ShowDialog()的区别

一 基本概念

首先,窗体和对话框的显示有两种方式:有模式&无模式。 

有模式:显示重要消息的对话框应始终是有模式的,“模式”窗体或对话框必须关闭或隐藏,然后您才能继续使用应用程序的其余部分,例如 MessageBox 就是一个可供使用的有模式的窗体。

无模式:“无模式”窗体让您在此窗体与另一窗体之间变换焦点,而不必关闭初始窗体。用户在该窗体显示的同时可继续在任何应用程序的其他位置工作。

 

二 实现

1.将窗体显示为有模式对话框:

Form.ShowDialog()方法,返回值是枚举类型的System.Windows.Forms.DialogResult。

当窗体显示为模式对话框时,单击“关闭”按钮(窗体右上角带 X 的按钮)会隐藏窗体并将 DialogResult 属性设置为 DialogResult.Cancel 

与非模式窗体不同,当用户单击对话框的关闭窗体按钮或设置 DialogResult 属性的值时,.NET Framework 不调用 Close 方法 窗体转而可以隐藏并可重新显示,而不用创建该对话框的新实例。 因为隐藏而非关闭显示为对话框的窗体,所以在您的应用程序不再需要该窗体时,必须调用该窗体的 Dispose 方法。

重载方法是  Form.ShowDialog (IWin32Window),将窗体显示为具有指定所有者的模式对话框:

参数owner 类型:System.Windows.Forms.IWin32Window 任何实现 IWin32Window(表示将拥有模式对话框的顶级窗口)的对象。

2.显示非模式窗体:

Form.Show()方法,无返回值类型。

重载方法是 Form.Show (IWin32Window),调用该方法等同于设置非模式的 Owner 属性,然后调用 Show() 方法。

显示窗体等效于将 Visible 属性设置为 true。 在调用 Show 方法之后,只要不调用 Hide 方法,Visible 属性就返回 true 值。

当窗体显示为无模式对话框时,单击“关闭”按钮(窗体右上角带 X 的按钮)后 .NET Framework 会调用 Close 方法,进而执行Dispose 方法。

 

posted on 2014-05-15 10:14  明树  阅读(3409)  评论(0编辑  收藏  举报