A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈晖 中级黑马   /  2013-4-29 21:12  /  1649 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

复习WinForm知识点,看到Show()与ShowDialog()的区别是是否以模式显示?
求详细解释两者区别?{:soso_e100:}

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

4 个回复

倒序浏览
show()仅仅是显示出来窗口界面而已也就是和你执行的结果在同一窗口显示所显示的窗口可以在后台运行而showDialog()是一个对话框窗口界面```执行结果以新窗口界面出现不允许进行后台运行就是你想编辑什么的时候```非得先关闭showDialog()窗口界面才可以进行其他操作

show()是非模式窗体.
showDialog()是模式窗体.
区别在于,以showDialog()打开的窗体,要等窗体关闭后才能操作其他窗体.而show()则不受此限制.

比如你先打开子窗体,想隐藏主窗体。
如果这个时候用Show的话,则会发生的事情是,打开子窗体的同时主窗体又显示出来,而使用ShowDialog()的时候主要当子窗体关闭的时候主窗体才会显示。
简单代码如下:
Form2 f2 = new Form2();
this.Visible = false;
f2.ShowDialog();
this.Visible= true;
这就是模态对话框的与Show的区别。

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
show()是非模式对话框。showDialog()是模式对话框。

拿记事本来说:
非模式对话框就是,你必须操作完了这个对话框才能干别的,比如“打开文件”,关闭这个对话框之前,什么也做不了;
模式对话框,就是操作这个对话框时,还可以干别的,比如“查找、替换”,打开“查找”时,照样可以修改记事本中的内容;

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
show()方法的返回值是void,也就是说是立即就返回的,show()方法打开的新窗体和当前窗体没有建立任何关系(当然当前窗体关闭会导致新建的那个窗体也会关闭),你可以操作新窗体,也可以操作当前窗体!
而showdialog()方法的返回值是DialogResult,新建窗体和原有窗体之间就无形搭起了一座桥,只有在当前窗体收到新窗体的返回值时,并且判断新窗体是否关闭,当前窗体才是否有对自己的操作权!你可以去看看反编译的结果和这两个方法的定义!希望对你有帮助!

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
简单点说,调用show()后面的代码继续执行,showdialog()根据返回的DialogResult条件返回值进行判断是否执行后面的程序。
showdialog()是个阻塞挂起的方法。而show显示新窗体而且不影响原有程序的进行。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马