Show()跟ShowDialog()的区别

来源:互联网 发布:女生突然变漂亮知乎 编辑:程序博客网 时间:2024/04/30 15:49
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”掉并显示又会有什么情况呢? 想知道答案吗?自己试试就知道啦!哈哈哈!