WinForm模态与非模态窗体

1、模态窗体

1)定义:

模态窗体是指当窗体显示时,用户必须先关闭该窗体,才能继续与应用程序的其他部分进行交互。

2)特点:

窗体以模态方式显示时,会阻塞主窗体的操作。用户必须处理完模态窗体上的操作(如点击"确定"或"取消")后,才能返回主窗体。适合用于需要用户立即处理的任务,例如对话框、消息框、设置窗口等。

3)显示方法:

使用 ShowDialog() 方法显示模态窗体。

csharp 复制代码
Form modalForm = new Form();
DialogResult result = modalForm.ShowDialog();
if (result == DialogResult.OK)
{
    // 处理模态窗体的结果
}

4)返回值:

ShowDialog() 返回一个 DialogResult 枚举值,可以用来判断用户的操作(如点击"确定"或"取消")。

2.、非模态窗体

1)定义:

非模态窗体是指窗体显示后,用户可以在不关闭该窗体的同时,继续与应用程序的其他部分进行交互。

2)特点:

窗体以非模态方式显示时,不会阻塞主窗体的操作。

用户可以同时操作多个窗体。

适合用于需要长时间显示或需要与其他窗体同时操作的场景,例如工具箱、属性窗口等。

3)显示方法:

使用 Show() 方法显示非模态窗体。

csharp 复制代码
Form modelessForm = new Form();
modelessForm.Show();

非模态窗体不会阻塞主线程,因此需要特别注意窗体的生命周期和数据同步问题。

如果需要与非模态窗体交互,可以通过事件或公共方法实现。

3.、模态窗体与非模态窗体的对比

4、视频讲解

5、 总结

模态窗体:适合需要用户立即处理的场景,会阻塞主窗体的操作。

非模态窗体:适合需要长时间显示或与其他窗体同时操作的场景,不会阻塞主窗体的操作。

根据具体需求选择合适的窗体显示方式,可以提升用户体验和应用程序的交互性。

相关推荐
一刻钟.3 小时前
C#高级语法之线程与任务
开发语言·c#
尤老师FPGA4 小时前
使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第四十七讲)
ui
weixin_307779134 小时前
C#实现两个DocumentDB实例之间同步数据
开发语言·数据库·c#·云计算
foundbug9994 小时前
基于C#的OPC DA客户端实现源码解析
开发语言·c#
UI设计兰亭妙微5 小时前
UI 设计组件的价值与实践+常用 UI 设计组件核心规范清单
人工智能·ui
Crazy Struggle6 小时前
.NET 中如何快速实现 List 集合去重?
c#·.net
xb11326 小时前
C#生产者-消费者模式
开发语言·c#
今晚打老虎z7 小时前
解决SQL Server 安装运行时针对宿主机内存不足2GB的场景
sqlserver·c#
Traced back8 小时前
# C# WinForms 数据库清理系统基础知识与避坑指南
开发语言·数据库·c#
灰灰勇闯IT9 小时前
Flutter for OpenHarmony:深色模式下的 UI 优化技巧 —— 构建舒适、可读、无障碍的夜间体验
flutter·ui