在模态窗口中控制窗口的隐藏和显示(.NET)
如果你创建了模态窗口,虽然一些API,例如Editor.GetSelection(),可以自动隐藏模式对话框,但如果从模态窗口出发与编辑器(编辑器指的模型空间,即你绘图的窗口)交互,
它会在GetSelection()完成后立即显示对话框,而你的其它代码可能仍在进行中,两者处于异步模式。
由于模式对话框很可能在其它代码完成之前显示,因此 AutoCAD UI 更新会被模态对话框阻止,可能产生一些问题,
比如你GetSelection()完成后还要从控制台输出一些信息,但是因为窗口显示出来了,那些信息可能输出到一半就暂停了,因为编辑器区域不刷新了。
所以在某些情况下可以选择先调用Editor.StartUserInteraction() 函数,手动隐藏窗口,它会在using结束之时才让窗口显示出来。
1 private void button_Click(object sender, EventArgs e)
2 {
3 Document doc = AcAp.DocumentManager.MdiActiveDocument;
4 Editor ed = doc.Editor;
5 using (ed.StartUserInteraction(this))
6 {
7 PromptSelectionOptions ops = new PromptSelectionOptions { SingleOnly = true };
8 var selectionResult = doc.Editor.GetSelection(ops);
9 if (selectionResult.Status == PromptStatus.OK)
10 {
11 ed.WriteMessage("do something...");
12 ed.WriteMessage("do something...");
13 }
14 }
15 }
在这个示例代码中,GetSelection()选择结束后,窗口仍然处于隐藏状态,直到第14行括号执行结束,窗口才会显示。
如果不使用StartUserInteraction() 函数,那么GetSelection()选择结束时,窗口会立即出现,if中的代码如果还在继续和编辑器交互,就可能被卡住,编辑器停止刷新,不会在编辑器中体现出来。
注意,在CAD2014中测试,StartUserInteraction()函数无效,在CAD2020中测试该函数有效,所以可能低版本对这个函数的支持有BUG,应该至少选择比2014更高的版本。
在模态窗口中控制窗口的隐藏和显示(.NET)的更多相关文章
- 如何使用T-SQL备份还原数据库及c#如何调用执行? C#中索引器的作用和实现。 jquery控制元素的隐藏和显示的几种方法。 localStorage、sessionStorage用法总结 在AspNetCore中扩展Log系列 - 介绍开源类库的使用(一) span<T>之高性能字符串操作实测
如何使用T-SQL备份还原数据库及c#如何调用执行? 准备材料:Microsoft SQL Server一部.需要还原的bak文件一只 一.备份 数据库备份语句:user master backup ...
- 2017年11月20日 WinForm窗体 窗口无边框可移动&&窗口阴影 控制窗口关闭/最小化
弹框 MessageBox.Show(); 清空 clear() 字符串拼接 string 公共控件 button 按钮 checkbox 复选框 checklistbox 多个复选框 combobo ...
- jquery控制元素的隐藏和显示的几种方法。
组织略显凌乱,请耐心看! 使用jquery控制div的显示与隐藏,一句话就能搞定,例如: 1.$("#id").show()表示为display:block, $("#i ...
- jquery控制元素的隐藏和显示的几种方法
使用jquery控制div的显示与隐藏,一句话就能搞定,例如: 方法一 显示: $("#id").show()表示为display:block, 隐藏: $("#id&q ...
- Html中 <tr> 标签的隐藏与显示
TR标签的隐藏与显示:block(显示)和none(隐藏) <tr style="display:none"> <tr id="sample" ...
- Altium Designer中画pcb如何隐藏和显示地线
如何隐藏: 如何显示: 按下N后
- WPF中控制窗口显示位置的三种方式
首先新建一个WPF工程,在主界面添加一个按钮,并给按钮添加点击事件button1_Click,然后新建一个用于测试弹出位置的窗口TestWindow.1.在屏幕中间显示,设置window.Window ...
- 第二十二篇:在SOUI中使用代码向窗口中插入子窗口
使用SOUI开发客户端UI程序,通常也推荐使用XML代码来创建窗口,这样创建的窗口使用方便,当窗口大小改变时,内部的子窗口也更容易协同变化. 但是最近不断有网友咨询如何使用代码来创建SOUI子窗口,特 ...
- 如何利用panel在一个窗口中实现诸多页面的显示
Book_register form11 = new Book_register();//new一个对象 form11.TopLevel = false;//去除子窗体的顶级窗体设置 form11.P ...
- 用js控制选项卡的隐藏与显示
通过使用ul和div来,借助于jquery来实现选项卡的显示与隐藏 <form action="" method="post"> <div&g ...
随机推荐
- 一些不错的VSCode设置和插件
设置 同步设置 我们做的各项设置,不希望再到其他机器的时候还得再重新配置一次.VSCode中我们可以登陆微软账号或者GitHub账号,登陆后我们可以开启同步设置.开启设置同步,根据提示登陆即可. 允许 ...
- CSS实现文字描边效果
一.介绍最近在一个项目的宣传页中,设计师使用了文字描边效果,之前我确实没有实现过文字的描边效果,然后我在查阅资料后,知道了实现方法.文字描边分为两种:内外双描边和单外描边,也就是指在给文字加上描边效果 ...
- 苹果MacOS系统傻瓜式本地部署AI绘画Stable Diffusion教程
Stable Diffusion的部署对小白来说非常麻烦,特别是又不懂技术的人.今天分享两个一键傻瓜式安装包,对小白来说非常有用.下面两个任选一个安装就可以. 一.DiffusionBee 简单介绍 ...
- msvc++中的预编译头文件pch.hpp和stdafx.h
预编译头文件 在 Visual Studio 中创建新项目时,会在项目中添加一个名为 pch.h 的"预编译标头文件". (在 Visual Studio 2017 及更高版本中, ...
- Mybatis plus配置MetaObjectHandler无效
项目环境 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-b ...
- MySQL高级9-锁
一.简介 锁是计算机协调多个进程或线程并发访问某一资源的机制.在数据库中,除了传统的计算资源(CPU.RAM.i/O)的挣用以外,数据也是一种供许多用户共享的资源.如何保证数据并发访问的一致性,有效性 ...
- Node.js 使用 officecrypto-tool 读取加密的 Excel (xls, xlsx) 和 Word( docx)文档
Node.js 使用 officecrypto-tool 读取加密的 Excel (xls, xlsx) 和 Word( docx)文档, 还支持 xlsx 和 docx 文件的加密(具体使用看文档) ...
- 通过 Haproxy 实现 ss 负载均衡
介绍 缺点:所有的SS的加密方式和密码必须一致 介绍:HAProxy是一个使用C语言编写的自由及开放原始码软件,其提供高可用性.负载均衡,以及基于TCP和HTTP的应用程序代理. 安装Haproxy ...
- jquery设置图片可手动拖拽
JQuery是一款流行的JavaScript框架,可以轻松实现网页交互效果.而其中一种常见效果是图片手动拖拽.以下是设置图片手动拖拽的JQuery代码. 1 2 3 4 5 6 7 8 9 10 11 ...
- chatgpt与搜索结合,百度会在这股浪潮下掘金吗?
年末,在百度内部沟通会上,百度创始人李彦宏提到最近他的朋友们问他如何看待ChatGPT,包括他周围同行业中的同一领域和跨境人士. 事实上,早在ChatGPT将他的对话能力和直观的互动方式展现给全世界 ...