C# Show()与ShowDialog()的区别

a.winform中窗体显示  
显示窗体可以有以下2种方法:  
form.showdialog方法 (窗体显示为模式窗体)  
form.show方法 (窗体显示为无模式窗体)  

两者具体区别如下:  
1.在调用form.show方法后,show方法后面的代码会立即执行  
2.在调用form.showdialog方法后,直到关闭对话框后,才执行此方法后面的代码  

小注:

1、模态显示后,
 弹出窗口阻止调用窗口的所有消息响应。
 只有在弹出窗口结束后调用窗口才能继续。
 在模态窗口“关闭”后,可以读取模态窗口中信息,包括窗口的返回状态,窗口子控件的值。

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

 

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

 
2、非模态显示后,
 可以在弹出窗口和调用窗口之间随意切换。
 调用窗口调用show方法后,下面的代码可以立即执行。
 在非模态窗口关闭后,窗口的所有资源被释放,窗口不存在,无法获取窗口的任何信息。

 

3、故当要show的窗体使用单例模式时,每次show完,close()窗体后,在第二次show的时候会出现:无法访问已释放的对象。对象名:“XXXX”。 此时,应该将close()修改为窗体隐藏。

 以上就是C# Show()与ShowDialog()的区别的内容,更多相关内容请关注PHP中文网(www.php.cn)!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1432346.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 06:36:05
下一篇 2025年12月17日 06:37:32

相关推荐

  • C#中字符串的一般性和特殊性具体介绍(图文)

    本篇文章主要介绍了c#中字符串的一般性和特殊性的相关知识,具有很好的参考价值,下面跟着小编一起来看下吧 string 类型是C#的基元类型之一,它是一个引用类型,对应FCL中的System.String类型。string 类型和普通的引用类型相比有什么样的相同点和不同点呢? 1、字符串具有固定不变性…

    好文分享 2025年12月17日
    000
  • 详细介绍C#实例化接口对象的方法

    下面小编就为大家带来一篇c# 实例化接口对象的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 在head first 设计模式中 用到了很多很多接口对象 首先澄清一个问题,就是接口不仅可以声明对象,而且可以把对象实例化,还可以当做参数被传入。 一、接口回调 这就是…

    好文分享 2025年12月17日
    000
  • 详解C#执行存储过程并将结果填充到GridView的示例代码

    这篇文章主要介绍了c#执行存储过程并将结果填充到gridview的方法,结合实例形式分析了c#存储过程操作及gridview控件相关操作技巧,需要的朋友可以参考下 本文实例讲述了C#执行存储过程并将结果填充到GridView的方法。分享给大家供大家参考,具体如下: SelectSql sq = ne…

    好文分享 2025年12月17日
    000
  • C# 加密小工具代码实现

    关键点有以下几个: 1、openFileDialog控件的使用如果通过单击选择按钮来实现选择本地某个文件的功能呢?具体来说分为以下几步: a、新建Winform窗体,画好相应的控件。 b、在工具箱中找到openFileDialog,拖到“选择文件”按钮上,此时会出现如下这种效果: 此时openFil…

    好文分享 2025年12月17日
    000
  • C#网络编程系列文章(五)之Socket实现异步UDP服务器

    本文介绍 在.Net中,System.Net.Sockets 命名空间为需要严密控制网络访问的开发人员提供了 Windows Sockets (Winsock) 接口的托管实现。System.Net 命名空间中的所有其他网络访问类都建立在该套接字Socket实现之上,如TCPClient、TCPLi…

    好文分享 2025年12月17日
    000
  • Config文件详解

    config文件详解  以上就是Config文件详解的内容,更多相关内容请关注PHP中文网(www.php.cn)!

    好文分享 2025年12月17日
    000
  • C# 判断字符串是否可以转化为数字

    c#  判断字符串是否可以转化为数字  /// /// 判断字符串是否可以转化为数字 /// /// 要检查的字符串 /// true:可以转换为数字;false:不是数字 public static bool IsNumberic(string str) { double vsNum; bool …

    好文分享 2025年12月17日
    000
  • C# 格式化string类型的金额

    c#  格式化string类型的金额  /// /// 根据精度将金额转换为自定义类型的string /// /// 需要的精度 /// 需要转换的金额 /// 转换后的金额 public string FormateString(int precision, double money) { //比…

    好文分享 2025年12月17日
    000
  • C# DataTable 用法小结

    1、新建表 private DataTable vsDt =new DataTable(); 2、清空表中内容(表中的列还在) vsDt.Clear(); 3、清空表中的列 vsDt.Columns.Clear(); 4、表中添加列 vsDt.Columns.Add(“BH”, typeof(str…

    好文分享 2025年12月17日
    000
  • C# Socket 线程

    最初的版本是这样的:点击打开链接。但一直没有调好,所以就咨询了一下同事翔哥,最后初步搞定! 客户端代码: using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using…

    2025年12月17日
    000
  • C# 对Word文档进行处理

    c#  对word文档进行处理  public partial class Form1 : Form { public Microsoft.Office.Interop.Word.Document document; public Microsoft.Office.Interop.Word.Appl…

    好文分享 2025年12月17日
    000
  • C# 根据列名与列值设置当前行

    c# 根据列名与列值设置当前行 /// /// 根据GridView中某列的值与列名来设置当前行 /// /// 待设置当前行的GridView /// 某列的值 /// 列名 public void SetFocusedRow(DevExpress.XtraGrid.Views.Grid.Grid…

    好文分享 2025年12月17日
    000
  • C# 怎么检测string字符串中有哪些数字?

    c# 怎么检测string字符串中有哪些数字? //测试函数 private void Form1_Load(object sender, EventArgs e) { foreach (var number in ExtractNumbersFromString(“abc2345 345fdf67…

    好文分享 2025年12月17日
    000
  • C# where泛型约束

            最近无意中看到了:http://www.php.cn/。但是,人笨啊,木有看懂到底是啥意思,木办法自己写一个试试吧,权当做个笔记 例子如下: 接口: using System;using System.Collections.Generic;using System.Linq;usi…

    2025年12月17日
    000
  • C# 用Linq实现DataTable实现重复数据过滤

    未过滤前: 过滤后(仅会过滤掉完全一样的数据): 代码如下: DataTable dt = this.JsonToDataTable(“[{“Code”:”SortId”,”Name”:”SortId”},{“Code”:”SortCode”,”Name”:”编号”},{“Code”:”Soluti…

    2025年12月17日
    000
  • C# 参数带this是什么意思(扩展方法)

    扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。 对于用 C# 和 Visual Basic 编写的客户端代码,调用扩展方法与调用在类型中实际定义的方法之间没有明显的差异。 最…

    2025年12月17日
    000
  • C# 枚举操作工具类

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Reflection;using System.ComponentModel;using System.Col…

    好文分享 2025年12月17日
    000
  • C# 如何识别一个字符串是否Json格式

    c# 如何识别一个字符串是否json格式 : using System;using System.Collections.Generic;using System.Text;namespace CYQ.Data.Tool{ /// /// 分隔Json字符串为字典集合。 /// internal c…

    好文分享 2025年12月17日
    000
  • C# 将 Json 解析成 DateTable

    c# 将 json 解析成 datetable  #region 将 Json 解析成 DateTable /// /// 将 Json 解析成 DateTable。 /// Json 数据格式如: /// {table:[{column1:1,column2:2,column3:3},{colum…

    2025年12月17日
    000
  • C# Excel数据验重及Table数据验重

    最近在做导入excel数据的时候,要检验数据是否重复:        1、要检验excel数据本身是否有重复?         2、Excel中的数据是否与数据库中的数据重复? 一、检验Excel中数据是否重复的方式有:        1、将Table中的数据使用select语句来过滤(此处略,可以…

    好文分享 2025年12月17日
    000

发表回复

登录后才能评论
关注微信