c#中Show和Showdialog的区别分析
简单地说他们的区别就是show弹出来的窗体和父窗体(上一个窗体的简称)是属于同一等级的,这两个窗体可以同时存在而且可以随意切换,但是showdialog弹出来的窗体就不能这样,他永远是被置顶的,如果不关闭这个窗体,那就不能使用别的窗体。
所以说相对于show来说我感觉showdialog更多了一种强制性。所以这两种方法虽然都是弹出窗体,但是程序员需要根据需要来选择使用
在C#中窗口的显示有两种方式:模态显示(showdialog)和非模态显示(show)。
二者最常见的区别是:
模态显示后,
弹出窗口阻止调用窗口的所有消息响应。
只有在弹出窗口结束后调用窗口才能继续。
在模态窗口“关闭”后,可以读取模态窗口中信息,包括窗口的返回状态,窗口子控件的值。
非模态显示后,
可以在弹出窗口和调用窗口之间随意切换。
调用窗口调用show方法后,下面的代码可以立即执行。
在非模态窗口关闭后,窗口的所有资源被释放,窗口不存在,无法获取窗口的任何信息。
MSDN上对showdialog的解释:
当窗体显示为模式对话框时,单击“关闭”按钮(窗体右上角带 X 的按钮)会隐藏窗体并将 DialogResult 属性设置为 DialogResult.Cancel。与无模式窗体不同,当用户单击对话框的关闭窗体按钮或设置 DialogResult 属性的值时,.NET Framework 不调用 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的区别分析相关推荐
- java堆和客栈_java中堆和栈的区别分析
堆和栈是java数据结构里非常重要的概念,本文较为详细的分析了二者之间的区别.供大家参考.具体如下: Java的堆是一个运行时数据区,类的(对象从中分配空间.这些对象通过new.newarray.an ...
- mysql中char与varchar的区别分析
原文网址:http://www.jb51.net/article/23575.htm mysql中char与varchar的区别分析 作者: 字体:[增加 减小] 类型:转载 在mysql教程中cha ...
- Java中equals()方法和==的区别分析
Java中equals方法和==的区别分析 equals(Object obj)方法,将对象与传入的obj进行比较,相等返回true,否则返回false.equals方法和"==" ...
- C#中Write()和WriteLine()的区别分析
Write()和WriteLine()都是System.Console提供的方法,两着主要用来将输出流由指定的输出装置(默认为屏幕)显示出来. 两着间的差异在 Console.WriteLine()方 ...
- fileoutputstream路径 android,Android编程中FileOutputStream与openFileOutput()的区别分析
本文实例分析了Android编程中FileOutputStream与openFileOutput()的区别.分享给大家供大家参考,具体如下: openFileOutput() 首先给大家介绍使用文件如 ...
- java中的成员变量和局部变量的区别_java中成员变量与局部变量区别分析
本文实例分析了java中成员变量与局部变量区别.分享给大家供大家参考.具体分析如下: 成员变量:在这个类里定义的私有变量,属于这个类. 创建以及使用成员变量 public class Person { ...
- mysql中char与varchar的区别分析(补充一句,int和integer没区别)
转自:http://www.jb51.net/article/23575.htm 在mysql教程中char与varchar的区别呢,都是用来存储字符串的,只是他们的保存方式不一样罢了,char有固定 ...
- Java中Comparable和Comparator接口区别分析
本文要来详细分析一下Java中Comparable和Comparator接口的区别,两者都有比较的功能,那么究竟有什么区别呢,感兴趣的Java开发者继续看下去吧. Comparable 简介 Comp ...
- java中堆与栈的区别_java中堆和栈的区别分析
堆和栈是Java数据结构里非常重要的概念,本文较为详细的分析了二者之间的区别.供大家参考.具体如下: Java的堆是一个运行时数据区,类的(对象从中分配空间.这些对象通过new.newarray.an ...
最新文章
- 小程序商城选什么服务器,小程序商城到底用来干什么?
- [ios2]iOS 使用subversion管理iOS源代码 【转】
- C语言N台服务器通信,使用socket的Linux上的C语言文件传输顺序服务器和客户端示例程序 ....
- php 后台配置系统,使用 laravel-admin 配置后台管理系统
- list排序方法python_python将list排序的方法有哪些
- 福州java培训哪里好_南通java培训哪家好
- 顺序结构实现【数据结构】
- python3基础3--数据类型--数据运算--表达式if -else-while-for
- Web前端笔记-element ui中table中某列添加a便签进行跳转
- python将图片原比例缩小_Python实现图片长宽比例缩放和填充
- pytorch模型保存
- 20个开发人员非常有用的Java功能代码(二)
- verilog赋多位值_Verilog入门学习笔记——第一弹
- 第十七届全国大学生智能汽车竞赛智能视觉组全国一等奖(RT1064工程+openART识别代码)
- Arduino ESP32 通过定时器(Timer)功能唤醒深度睡眠
- word2vec及其优化
- Python语法错误和异常
- PicoZense TOF 深度摄像头技术参数 | AIRCamera,DCAM710,DCAM100
- [渝粤教育] 南通大学 电路分析 参考 资料
- 惠普一开机就自动修复_电脑开机提示自动修复怎么办?戳这里几招解决
热门文章
- onclick 调用php,AJAX调用PHP简单应用
- android 串口一直打开_实例 | 使用Python串口实时显示数据并绘图
- 标定板标定和九点标定的区别_标定系列一 | 机器人手眼标定的基础理论分析
- android截图canvas为空,html2canvas截图空白问题的解决
- 再论PID,PID其实很简单。。。
- java 复制文件_Java中复制文件的4种方法
- java 断点续传 开源_java断点续传原理
- 在java中关于枚举类型的特性_java枚举类型小结
- ps4修改服务器地区,ps4怎么修改服务器地址
- java中单例设计模式登记式单例类_java23种设计模式-创建型模式之单例模式