CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 2022 开发者帮助

事件处理程序准则 (.NET)

2024-5-18 18:49| 发布者: admin| 查看: 12| 评论: 0|原作者: admin|来自: AutoCAD

事件处理程序准则 (.NET)

请务必记住,事件只是提供有关 AutoCAD 中发生的状态或活动的信息。尽管可以编写事件处理程序来响应这些事件,但在触发事件处理程序时,AutoCAD 可能正处于操作过程中。因此,如果事件处理程序要与 AutoCAD 及其数据库一起提供安全操作,则它们可以执行的操作受到一些限制。

  • 不要依赖事件的顺序。

    编写事件处理程序时,不要依赖事件的顺序,这些事件的发生顺序与你认为的发生顺序完全相同。例如,如果发出 OPEN 命令,则将触发事件 CommandWillStart、DocumentCreateStarted、DocumentCreated 和 CommandEnded。但是,它们可能不会每次都以完全相同的顺序出现。你唯一可以依赖的是,大多数事件都是成对发生的,一个开始和结束的事件。

  • 不要依赖操作顺序。

    如果先删除 object1,然后删除 object2,则不要依赖将收到 object1 和 object2 的 ObjectErased 事件这一事实。您可能首先收到 object2 的 ObjectErased 事件。

  • 不要尝试从事件处理程序执行任何交互函数。

    尝试从事件处理程序中执行交互式函数可能会导致严重问题,因为在触发事件时,AutoCAD 可能仍在处理命令。因此,应始终避免在命令提示符下请求输入以及对象选择请求,以及从事件处理程序中使用 SendStringToExecute 方法。

  • 不要从事件处理程序中启动对话框。

    对话框被视为交互式功能,可能会干扰AutoCAD的当前操作。消息框和警报框不被视为交互式,可以安全地发出;但是,在某些事件处理程序(如 EnterModal、LeaveModal、DocumentActivated 和 DocumentToBeDeactivated)中发出消息框可能会导致意外的排序。

  • 可以将数据写入数据库中的任何对象,但应避免修改发出事件的对象。

    显然,导致事件被触发的任何对象仍可能处于打开状态,并且当前正在进行的操作。因此,请避免从同一对象的事件处理程序修改对象。但是,您可以安全地从触发事件的对象中读取信息。

  • 不要从事件处理程序执行任何可能触发同一事件的操作。

    如果在触发同一事件的事件处理程序中执行相同的操作,则将创建一个无限循环。例如,切勿尝试从 ObjectOpenedForModify 事件中打开对象,否则 AutoCAD 只会继续打开对象。

  • AutoCAD 显示模式对话框时不会触发任何事件。

路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 )

GMT+8, 2024-6-27 15:58

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部