当前位置: 首页 > news >正文

Windows 窗体显示的“模式方式”与“非模式方式”

                                  Windows 窗体显示的“模式方式”与“非模式方式”


     一、Windows 窗体的显示模式

     在Windows中,显示存在作为窗体和对话框要么是有模式的,要么是无模式的。

    “模式”窗体或对话框必须关闭或隐藏,然后您才能继续使用应用程序的其余部分。当我们要显示重要消息的对话框应始终是有模式的。例如 MessageBox 是一个可供您使用的有模式的窗体。

    “无模式”窗体让您在此窗体与另一窗体之间变换焦点,而不必关闭初始窗体。 用户在该窗体显示的同时可继续在任何应用程序的其他位置工作。

    作为编程,执行代码是一条一条向下执行的,“模式”窗体或对话框,是严格执行这一规律,查找问题较容易。“无模式”窗体,执行代码可以跨越出的现对话框(或模块),进入另一窗体或下一段代码。因此,无模式窗体的编程难度更大,因为用户访问这些窗体的顺序可能无法预知。不论用户执行什么操作,都必须使该应用程序的状态保持一致。 工具窗口经常以无模式方式显示。

    通俗理解,“模式”窗体就是一个“栈”,由父窗口,进入子窗口后,退出子窗口,才能返回父窗口。而非“模式”窗口,就是一个“梳子”每个窗口是并列,随时进入指定窗口。

     从代码的执行上,“模式”窗体有暂停键,出现代码任务末完成就暂停。需非“模式”窗体无暂停键,出现代码任务末完成就越过,执行后续的代码。

     二、sPageControl创建的窗口,就得使用非“模式”方式

  Show()   

        以非模式方法显示新的窗体并且立即返回,并不会在当前激活的窗体和新窗体之间创建任何关系;这意味着现存的窗体可以被关闭,而新窗体仍然继续显示。

        三、“模式”

  Showmodal()

     窗口用Showmodal函数显示出来后,程序不会继续自己执行, 而是根据你对这个窗口的操作来执行, ,只有关闭了这个窗口后才会执行。

     Form.ShowModal() 时相当于执行了一个 Call,主窗体是能够处理下一条消息,其它的窗体不接受用户的操作,ShowModal() 以下的代码在 ShowModal() 出的窗体被关闭前是不会被执行的,但并不影响父窗体的消息循环。

     一个窗口用Show过程显示出来后,代码一样往下执行的,即程序会继续执行。

      四、举例
     ShowModal 出来的对话框必须关掉才能处理其他窗体.也就是当前焦点不能转移到其他的窗体上,除非关掉。
     Show 出来的对话框则可以将当前焦点转移到其他界面上。
     Show出来的一般是子窗体。通常对话框叫非模式对话框,ShowModal 出来的是主窗体,叫模式对话框.。
     

相关文章:

  • JDBC详讲Connection与 jdbc-Statement
  • 外部 SRAM 实验
  • Redis从入门到精通(二)
  • 2021.09青少年软件编程(Python)等级考试试卷(四级)
  • JAVA计算机毕业设计毕业论文管理系统Mybatis+系统+数据库+调试部署
  • Redis实战 - 01 Redis 和 SpringSecurity Oauth2 实现认证授权中心
  • 数据结构:堆
  • 基于机器学习的搜索推荐系统
  • MATLAB | 分段赋色折线图及其图例绘制
  • C#面向对象程序设计课程实验三:实验名称:C#数组和集合
  • 数据结构--(栈、队列实现及3个OJ题)
  • 实时数据同步工具<Maxwell 操作案例>
  • 【设计模式】-创建型模式-第2章第3讲-【建造者模式】
  • CS231n Module2: CNN part1:Architecture
  • 模电学习1. 三极管基础知识及常用电路
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • 【前端学习】-粗谈选择器
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • GraphQL学习过程应该是这样的
  • javascript 哈希表
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • JS实现简单的MVC模式开发小游戏
  • leetcode98. Validate Binary Search Tree
  • PV统计优化设计
  • Redash本地开发环境搭建
  • 订阅Forge Viewer所有的事件
  • 构建工具 - 收藏集 - 掘金
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 学习使用ExpressJS 4.0中的新Router
  • #pragma预处理命令
  • (2)MFC+openGL单文档框架glFrame
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转) Face-Resources
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .NET CLR Hosting 简介
  • .secret勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复
  • .ui文件相关
  • @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
  • [ 常用工具篇 ] POC-bomber 漏洞检测工具安装及使用详解
  • [ 蓝桥杯Web真题 ]-布局切换
  • [22]. 括号生成
  • [bzoj1038][ZJOI2008]瞭望塔
  • [CLR via C#]11. 事件
  • [CSS]CSS 的背景
  • [exgcd] Jzoj P1158 荒岛野人
  • [Java]深入剖析常见排序