C# show和showdialog区别
在C#中窗口的显示有两种方式:模态显示(showdialog)和非模态显示(show)。
二者最常见的区别是:
模态显示后,
弹出窗口阻止调用窗口的所有消息响应。
只有在弹出窗口结束后调用窗口才能继续。
在模态窗口“关闭”后,可以读取模态窗口中信息,包括窗口的返回状态,窗口子控件的值。
非模态显示后,
可以在弹出窗口和调用窗口之间随意切换。
调用窗口调用show方法后,下面的代码可以立即执行。
在非模态窗口关闭后,窗口的所有资源被释放,窗口不存在,无法获取窗口的任何信息。
MSDN上对showdialog的解释:
当窗体显示为模式对话框时,单击“关闭”按钮(窗体右上角带 X 的按钮)会隐藏窗体并将 DialogResult 属性设置为 DialogResult.Cancel。与无模式窗体不同,当用户单击对话框的关闭窗体按钮或设置 DialogResult 属性的值时,.NET Framework 不调用 Close 方法。窗体转而可以隐藏并可重新显示,而不用创建该对话框的新实例。因为未关闭显示为对话框的窗体,所以在您的应用程序不再需要该窗体时,必须调用该窗体的 Dispose 方法。
也就是说,非模态窗口在关闭时,会调用close方法,进而调用dispose方法,将窗口资源进行回收,所以窗口关闭后,不能在获取窗口信息。
模态窗口在关闭时,不会调用close方法,也不调用dispose方法,窗口仍然存在,占有资源,所以可以继续获得窗口相关信息,在窗口不再使用时,需要手动释放资源。
Form2 testDialog = new Form2();if (testDialog.ShowDialog(this) == DialogResult.OK){this.txtResult.Text = testDialog.TextBox1.Text; // 窗口关闭后,还可以继续访问窗口的子控件值}else{this.txtResult.Text = "Cancelled";}// 关闭窗口// 其他操作............testDialog.ShowDialog(); // 模态窗口关闭后,可以再次显示出来testDialog.Dispose(); // 当模态窗口不再使用时,应该调用dispose方法释放资源Form2 test = new Form2();test.Show(); // 非模态显示// 关闭窗口// 其他操作............test.Show(); // 异常,因为在test关闭时,窗口已经被彻底销毁了,这里必须重新新建一个窗口,然后显示// 修改为如下test = new Form2(); // 创建一个新窗口,重新分配空间test.Show(); // 显示窗口
C# show和showdialog区别相关推荐
- winform show()和showdialog()区别(转载)
原网址:https://blog.csdn.net/percy__lee/article/details/48554339 相关知识点 显示窗体可以有以下2种方法: Form.ShowDialog ...
- Window.Show()和Window.ShowDialog()区别
Window.Show(): 打开窗口并返回,而不等待新打开的窗口关闭. Window.ShowDialog(): 打开一个窗口,并且仅在新打开的窗口关闭后才返回. 转载于:https:/ ...
- winform form.show() 以及form.showdialog()区别 以及form.show()控件不显示解决办法
非模态窗口 1. form.show() 执行此条语句后,下面的程序会立即执行,但是会出现控件不显示的问题,解决办法: 在后面加上form.Update()即可解决. 模态窗口 1.form.show ...
- show()与showdialog()区别
这是个很弱的问题,但我还是要写一下: 显示有模式和无模式 Windows 窗体 窗体和对话框要么是有模式的,要么是无模式的."模式"窗体或对话框必须关闭或隐藏,然后您才能继续使用应 ...
- show() showdialog()区别
Show():调用的窗体不会返回任何值(窗体显示为无模式窗体) 在使用.Show()显示form以后,会马上继续执行.Show()后面的语句. ShowDialog():调用的form会返回一个Dia ...
- C# 窗体应用 winform show 和showdialog区别
同: 俩个都是显示界面 异: show 运行后,后面代码接着运行 showdialog 运行后,必须页面关闭在继续运行 showdialog代码 注意: 1.!!!如果要 打开form1,点击打开fo ...
- wpf 点击按钮弹出选择框_关于WPF的弹出窗口
几个重要的概念需要清楚: Show和ShowDialog区别 1.调用Show方法后弹出子窗口后,线程会继续往下执行.调用ShowDialog方法弹出子窗口后,线程会阻塞,直到子窗口关闭才继续往下执行 ...
- WinForm二三事(一)消息循环
在进入正文之前,想请大家先欣赏下面两段代码: 1: //这是一个控制台程序,请先添加System.Windows.Form.dll的引用 2: using System.Windows.Form; 3 ...
- C# 非模式窗体show()和模式窗体showdialog()的区别
对话框不是模式就是无模式的.模式对话框,在可以继续操作应用程序的其他部分之前,必须被关闭(隐藏或卸载).例如,如果一个对话框,在可以切换到其它窗 体或对话框之前要求先单击"确定"或 ...
最新文章
- DOM模拟京东常用快捷键
- python的用途实例-python 星号(*)的多种用途
- UVa10970 - Big Chocolate(计数问题)
- 一个资深投行女销售和低调IT创业男的故事
- 如何修改git已提交记录的邮箱?
- 记录 之 在华为NPU上变更镜像
- 解决 fprintd-0.1-19.git04fd09cfa.el6 crash问题
- 脚本语言php是什么意思,php是什么脚本语言
- ldap java_使用LDAP保护Java EE6中的Web应用程序
- graph-easy使用简介
- 中国开放教育资源协会_教育中的开放数据开始显示出真正的吸引力
- [病毒分析]熊猫烧香(上)初始分析
- 腾讯终于良心了!桌面混乱有救了
- win10红警2黑屏_Windows10黑屏常见情况及解决办法
- 关于新手做ASO的一些方法和技巧
- 【JavaEE】电商秒杀项目·第2章·基础项目搭建
- php 随机字符串函数,PHP 生成随机字符串的方法函数
- 如何将谷歌浏览器的插件下载到本地?
- 正则表达式的语法规则
- C语言之——左旋字符串