C#C#C# WinFormWinFormWinFormWinForm中中中中ShowShowShowShow与与与与ShowDialogShowDialogShowDialogShowDialog Form.Show创建新窗体后(非模式),立即返回,且没有在当前活动窗体和新窗体间建立任何关系,即在保持新窗口的情况下关闭(或最小化)现有窗体或在保留现有窗体情况下关闭(或最小化)新窗口,都是可以的。 Form.ShowDialog创建模式窗体,即只有当建立的新窗口关闭之后,原有窗体才能重新获得控制权。即如果不关闭新窗口,将无法对原活动窗口进行任何操作。对新窗口进行的最小化、还原将会和原窗口一起进行,但是新窗口的关闭对原窗口没有影响。 对于winform来说,大家可能有一个惯性认识或者潜意识,Winform在关闭时(Close()方法被调用时),会自动调用Dispose。确实,对很多对象,Close()方法会调用Dispose。然而,对Winform,并不总是成立,只有当Winform以Show的方式,及无模式的方式弹出时,Close才会调用Dispose,也就是说用户在这种情况下关闭对话框,Dispose会马上被调用,资源会马上被释放。 但是对ShowDialog,及模式对话框的情况就不是这样了,你必须显示调用dispose 以下两种方式可以用show的方法打开新窗体,并且在关闭的时候不释放(一) protected override void OnClosing(CancelEventArgs e) { e.Cancel = true; this.Hide(); } (二)protected override void Dispose(bool disposing) { //if (disposing && (components != null)) //{ //components.Dispose(); //} //base.Dispose(disposing); Hide(); winForm表单的show( )和showdialog( )的区别 分类: VS.NET 2008-11-12 09:16 374人阅读 评论(0) 收藏 举报 showDialog 是这样说的 : 将窗体显示为具有指定所有者的模式对话框 show 是这样说的 : 向用户显示具有指定所有者的窗体 关键就是 模式对话框和窗体 的区别了, 简单的讲模式对话框弹出来以后,你将不能选中主窗体,除非将模式对话框关闭。而 普通窗体弹出来以后你还可以对主窗体进行操作。 应用上面来说, 使用 模式对话框 的时候 在showDialog 的时候 程序会在这showDialog之后停止执行,而等待 模式对话框的关闭, 所以在关闭之前可以设置dialogResult属性。 this.DialogResult = DialogResult.OK; this.Close(); 然后你就可以在主窗口 取到这个值,判断 子窗口 是否是正常关闭,(非正常关闭的DialogResult 是 cancel)。 而 show 出来的窗体 设置这个是没有用的