C# 弹出窗口show()和showdialog()的两种方式
作者:火星papa 时间:2022-05-08 17:12:36
我们在构建C# Form窗口的时候经常需要到弹出新的窗口,那么接着就会如何弹出窗口的疑问。这里介绍最常见的两种弹窗方法show()和showdialog()。我在VS2019中构建一个简单的工程来讲解让他们之间的区别。大家也可以动手建一个体验他们之间的区别。
form.Show()弹出窗口
这个方法弹出来的窗体和父窗体(上一个窗体)是属于同一等级的窗体,这两个窗体可以同时存在而且可以随意切换。
form.ShowDialog()弹出窗口
showdialog弹出来的窗体就不能这样,它永远是被置顶的,如果不关闭这个窗体,那就不能使用别的窗体,别的窗体都是灰显的。
一、构建工程和界面介绍
首先我们建立两个基本窗口类,如下图,一个是首先会启动的Form主窗口(右边),其次是弹出界面Dialog(左边)。
二 、添加代码
将两个窗口的代码添加到对应的类中。添加的按键单击事件中增加下面的主窗口代码和弹出窗口代码。
(1)主窗口代码:
public Form1()
{
InitializeComponent();
}
//实例化窗口类
Dialog _dlg = new Dialog();
private void button_show_Click(object sender, EventArgs e)
{
_dlg.Show();//显示
}
private void button_hide_Click(object sender, EventArgs e)
{
_dlg.Hide();//隐藏
}
private void button_showDialog_Click(object sender, EventArgs e)
{
//实例化窗口类
Dialog _dialog = new Dialog();
//弹出对话框
_dialog.ShowDialog();
}
(2)弹出窗口代码:
public Dialog()
{
InitializeComponent();
}
private void button_ok_Click(object sender, EventArgs e)
{
//指定返回结果
this.DialogResult = DialogResult.OK;
//关闭
this.Close();
}
private void button_cancel_Click(object sender, EventArgs e)
{
//指定返回结果
this.DialogResult = DialogResult.Cancel;
//关闭
this.Close();
}
private void hide_Click(object sender, EventArgs e)
{
//隐藏
this.Hide();
}
三、验证效果和小结
我们可以看到这些Show()方法和ShowDialog()方法都可以弹出我们想要的窗口,但是他们的效果明显不同,可以小结概述为下面几个方面差异。
项目 | Show()方法 | ShowDialog()方法 |
---|---|---|
名称 | 显示控件 | 显示对话框 |
关闭的对应方法 | Hide() 隐藏控件 | Close()关闭窗体 |
编辑显示效果 | 和主窗口平级,弹出子窗口后,两者可以任意切换到顶层和编辑。 | 比主窗口优先级高,弹出编辑子窗口只能编辑子窗口,子窗口独占顶层,只有关闭(close)返回后,用户才可以编辑主窗口。 |
理模显示理解 | 显示或隐藏控件,隐藏时并没有关闭,只是看不见,还存在。 | 打开等待关闭的对话框,打开就存在,关闭就清除,和messageBox类似,关闭等同于右上角的叉叉(×)。 |
重点:Show()和Hide() 是一对,ShowDialog()和Close()是一对。 请一一对应,不能混用的哦。
来源:https://blog.csdn.net/weixin_45023644/article/details/125639125
标签:C#,弹出窗口,show(),showdialog()
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
java基础之注解示例详解
2022-05-08 23:47:20
![](https://img.aspxhome.com/file/2023/5/100675_0s.png)
Java Lambda表达式与匿名内部类的联系和区别实例分析
2022-01-05 21:10:22
详解Spring Cloud Eureka多网卡配置总结
2023-11-09 07:33:15
总结Java集合类操作优化经验
2023-01-27 10:29:37
简单了解java自定义和自然排序
2022-01-29 02:47:26
Spring Boot开发RESTful接口与http协议状态表述
2023-05-27 03:26:48
![](https://img.aspxhome.com/file/2023/4/84314_0s.png)
java实现国产sm4加密算法
2022-02-14 06:27:08
IDEA离线安装maven helper插件的图文教程
2023-11-28 16:00:24
![](https://img.aspxhome.com/file/2023/3/78053_0s.jpg)
spring mvc+localResizeIMG实现HTML5端图片压缩上传
2023-07-11 15:31:51
java,android,MD5加密算法的实现代码(16位,32位)
2022-07-12 20:40:10
javaweb登录验证码的实现方法
2021-09-12 05:00:08
![](https://img.aspxhome.com/file/2023/5/77985_0s.jpg)
SpringBoot实现邮件发送功能的姿势分享
2022-05-27 02:08:09
![](https://img.aspxhome.com/file/2023/3/69893_0s.jpg)
Android 自定义输入支付密码的软键盘实例代码
2021-08-09 11:41:43
![](https://img.aspxhome.com/file/2023/9/99789_0s.png)
使用JSONObject生成和解析json的方法
2022-06-15 11:13:15
面试Spring中的bean线程是否安全及原因
2021-06-11 18:25:38
spring mvc中直接注入的HttpServletRequst安全吗
2021-12-29 07:48:16
![](https://img.aspxhome.com/file/2023/6/63506_0s.png)
学习Java设计模式之观察者模式
2023-07-03 05:17:46
![](https://img.aspxhome.com/file/2023/1/66541_0s.jpg)
Java获取彩色图像中的主色彩的实例代码
2021-10-16 01:09:39
![](https://img.aspxhome.com/file/2023/2/67172_0s.png)
SpringBoot集成支付宝沙箱支付(支付、退款)
2022-02-15 16:50:52
带你入门Java的泛型
2023-06-08 02:48:24