首页 > 其他分享 >Show()跟ShowDialog()的区别

Show()跟ShowDialog()的区别

时间:2022-11-30 17:07:38浏览次数:42  
标签:模态 区别 Show 点击 窗体 ShowDialog


Show和ShowDialog有什么不同呢,什么时候用Show,什么时候用ShowDialog呢?相信看完这篇博客,你会有一个比较明确的答案。





说到show跟ShowDialog的区别很多人会想到的是,他们一个是非模态一个是模态,模态窗体就是必须将其关闭(cCose)或隐藏(Hide)才能对其他窗体进行操作。这只是他们之间表面上的区别,他们真正的区别不仅仅局限于此。





show和showdialog的本质区别有两个方面:一个是代码执行上的区别;一个是自身的机制不同。





代码执行上的区别



这个区别比较容易发现,Show方法的调用会立即返回,新窗体显示的同时Show方法调用语句后面的代码会得到执行;而对ShowDialog方法的调用会被阻塞,直到新窗体关闭,ShowDialog方法调用语句后面的代码才能得到执行。






自身机制的区别



不知道大家有没有注意到这一点,请看下图










单击模态显示窗体2,并在其文本框内输入一些内容,然后点击右上角的“x”。







之后再次点击窗体1中的模态显示窗体2,这个时候你会发现文本框里的文字依然存在,这是问什么呢?因为此时窗体2并没有Close,而只是Hide(不太确定此时是不是跟Hide一样)。如果想要再次点击模态显示出现一个新的窗体2,那么只需在窗体2的Closing或者Closed事件里写上 Me.Dispose()即可。





如果第一次点击模态显示,然后输入文字,“x”掉,然后点击普通显示,会怎么样呢?再次“x”掉并显示又会有什么情况呢? 想知道答案吗?自己试试就知道啦!哈哈哈!

标签:模态,区别,Show,点击,窗体,ShowDialog
From: https://blog.51cto.com/liushuijinger/5899949

相关文章

  • HTTP1和HTTP2的区别
    HTTP1和HTTP2的区别一、Http1Http1.x缺点:线程阻塞,在同一时间,同一域名的请求有一定数量限制,超过限制的书目录的请求会被阻塞短连接:浏览器和服务器他只保持短暂的连接......
  • EBS描述性弹性域和键弹性域的区别
    Editor.md开源在线Markdown编辑器一.描述性弹性域描述性弹性域的实质就是系统预留自定字段,系统可以使用说明性弹性域来获取业务所特有的重要附加信息。系统可能自......
  • Linux中&&和&,|和||用法及区别详解!
    在使用Linux命令时,我们往往可以一行执行多条命令,或者有条件的执行下一条命令,对于刚接触Linux命令时,特殊符号绝对是最困扰的事情之,本篇文章将为大家详细介绍下&&和&,|和||的......
  • showdoc本地部署
    ShowDoc就是一个非常适合IT团队的在线文档分享工具,使用的是一款非常轻量级的关系数据库系统SQLite,支持多数SQL92标准。它可以加快团队之间沟通的效率。但是把所有的接口文......
  • idea创建SpringBoot项目时,Type 选择 maven project 和maven pom 有什么区别?
    https://blog.csdn.net/bin_0203/article/details/121841615 在操作到Type选项时有四种项目类型可供选择:MavenProject(GenerateaMavenbasedprojectarchive)M......
  • v-if和v-show的区别
    v-if 和 v-show的区别v-if 是“真实的”按条件渲染,因为它确保了在切换时,条件区块内的事件监听器和子组件都会被销毁与重建。v-if 也是惰性的:如果在初次渲染时条件值......
  • 1、gradle之assembleDebug与assembleRelease的区别
    官方教程:http://tools.android.com/tech-docs/new-build-system/user-guideassembleDebug会打出debug包assembleRelease会打出release包assemble会同时打出debug包和re......
  • apply/call/bind区别,看看这是不是全网最简单的区分方法
    啥都不说,先上代码,看了秒懂...letarr=[1,2,3,4,5,6,7,8,9]console.log(Math.max.apply(this,arr))//9console.log(Math.max.call(this,...arr))//9......
  • C#中抽象类和接口的区别
    一、抽象类:抽象类是特殊的类,只是不能被实例化;除此以外,具有类的其他特性;重要的是抽象类可以包括抽象方法,这是普通类所不能的。抽象方法只能声明于抽......
  • C#数据结构--Dictionary、HashTable、List、HashSet区别
    在.Net  模仿java的过程中,抛弃了HashMap,所以我们今天分析下Dictionary、HashTable、HashSet区别。处理碰撞,即碰撞到同一个Bucket槽上:Hashtable和Dictionary从数据结构上......