在C#中窗口的显示有两种方式:模态显示(showdialog)和非模态显示(show)。
二者最常见的区别是:

模态显示后,弹出窗口阻止调用窗口的所有消息响应。只有在弹出窗口结束后调用窗口才能继续。在模态窗口“关闭”后,可以读取模态窗口中信息,包括窗口的返回状态,窗口子控件的值。
Form2 test = new Form2;
if(test.ShowDialog==DialogResult.OK)
{
test.Show();
}

非模态显示后,

可以在弹出窗口和调用窗口之间随意切换。
调用窗口调用show方法后,下面的代码可以立即执行,支持多个子窗体运行。
Form2 test = new Form2;
test.Show();

在非模态窗口关闭后,窗口的所有资源被释放,窗口不存在,无法获取窗口的任何信息。

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

也就是说,非模态窗口在关闭时,会调用close方法,进而调用dispose方法,将窗口资源进行回收,所以窗口关闭后,不能在获取窗口信息。
模态窗口在关闭时,不会调用close方法,也不调用dispose方法,窗口仍然存在,占有资源,所以可以继续获得窗口相关信息,在窗口不再使用时,需要手动释放资源。

避免某个子窗体重复运行的方法(showdialog、show)相关推荐

  1. C# .net防止一个程序(WinForm)重复运行的方法。

    //在写一些服务型的软件的时候,你可能不希望一个操作系统里有两个副本在运行,这样也许会扰乱你的操作.这时,你就需要限制程序的副本.下面的这个方法,很简单的就可以实现上述功能. using System ...

  2. python怎么重复程序_python怎么让程序重复运行

    python让程序重复运行的方法:1.报错后,重新启动[.py]文件,继续执行:2.重复执行本[.py]文件中的内容:3.异常调用函数本身. python让程序重复运行的方法: 方法一: 报错后,重新 ...

  3. winform父窗体实现多个子窗体只能显示一个

    一.前言 当一个父窗体中包含多个动能的时候可能会存在很多子窗体,那么当每个都去打开的时候就会都显示在父窗体上,这样给用户的视觉肯定很不舒服.所以当出现这种情况的时候肯定也会有解决方法,以下就是一种解决 ...

  4. JAVA_OA(十四)番外:JAVAWEB防止表单重复提交的方法整合(包括集群部署)

    因为自己要用,所以查找了网络上javaweb项目防止表单重复提交的方法,有些部分不太好找,所以整合后贴出来,首先是孤傲苍狼的一部分博客文章,集群部署的解决方案在后面(注意大红字) 原文出处:孤傲苍狼的 ...

  5. java去掉重复字符_Java实现去掉字符串重复字母的方法示例

    本文实例讲述了Java实现去掉字符串重复字母的方法.分享给大家供大家参考,具体如下: package demo; public class Ctrl { public static void main ...

  6. MySql避免重复插入记录方法(ignore,Replace,ON DUPLICATE KEY UPDATE)

    本文章来给大家提供三种在mysql中避免重复插入记录方法,主要是讲到了ignore,Replace,ON DUPLICATE KEY UPDATE三种方法,各位同学可尝试参考. 案一:使用ignore ...

  7. js判断数组中重复元素并找出_javascript查找数组中重复元素的方法

    这篇文章主要介绍了JS查找数组中重复元素的方法,结合具体实例形式对比分析了javascript针对数组的遍历.判断.排序等相关操作技巧,需要的朋友可以参考下 本文实例讲述了JS查找数组中重复元素的方法 ...

  8. c++删除数组中重复元素_在VBA中如何使用动态数组,以及利用动态数组去除重复值的方法...

    大家好,我们今日继续讲解VBA数组与字典解决方案第22讲:在VBA中如何使用动态数组,以及利用动态数组去除重复值的方法.如果文本中含有大量的重复值,此时,如果我们要剔除重复值,该怎么办?用VBA的方法 ...

  9. 如何找出电脑内的重复文件,查找电脑磁盘重复文件的方法

    不少小伙伴都有收集各种软件.图片和资料的习惯,但是时间久了,有许多软件.图片和资料已经下载过了,但是忘记了,又重新下载了,这样导致电脑里面有很多重复的软件.图片和资料.如何找出电脑内的重复文件? 我们 ...

最新文章

  1. Git fetch和git pull的区别
  2. 11种常见SQLMAP使用方法详解
  3. linux环境双网卡主机路由配置
  4. Redis的数据类型之String
  5. 将“100px” 转换为100
  6. 产品经理最重要的3个能力
  7. 阶段1 语言基础+高级_1-3-Java语言高级_09-基础加强_第3节 注解_18_注解_案例_简单的测试框架...
  8. TwinCAT与台达伺服驱动器连接调试控制电机正反转
  9. Java项目实战:实现淡旺季飞机票打折
  10. YIT-CTF—Web
  11. Incapsula js加密混淆分析
  12. Springboot+RSA非对称加密
  13. 学生党matlab哪个版本最好用,学生党福音!仅4个GPU打造自己的BigGAN,PyTorch代码已开源...
  14. 如何究竟如何正确注册Apple ID
  15. [mybatis异常:Could not find result map ......]
  16. NXP PN53x系列芯片介绍
  17. MT6(8)735平台Android5.1 codege.dws 文件
  18. c语言监视哨用法,C++ 实现带监视哨的顺序查找算法
  19. Python 基础知识(夯实基础,才能盖起高楼大厦)
  20. 亚马逊ERP系统是什么?他有什么用

热门文章

  1. window linux IPC ftok BY_HANDLE_FILE_INFORMATION
  2. 移动端输入框弹出键盘控制
  3. SAP ABAP规划 使用LOOP READ TABLE该方法取代双LOOP内部表的方法
  4. Docker新手入门:基本用法
  5. mysql索引结构原理、性能分析与优化
  6. 第三方登录接入-qq,weibo-java
  7. HDU2546_用01背包做
  8. Oracle 随机获取N条数据
  9. kylinH5框架之项目组件理解
  10. componentsJoinedByString 和 componentsSeparatedByString 的方法的区别