CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

ActiveX 开发指南

关于事件处理程序 (VBA/ActiveX)

2023-1-4 21:43| 发布者: admin| 查看: 513| 评论: 0|来自: AutoCAD

摘要: 请务必记住,事件仅提供有关AutoCAD中发生的状态或活动的信息。

请务必记住,事件仅提供有关AutoCAD中发生的状态或活动的信息。

尽管可以编写事件处理程序来响应这些事件,但在触发事件处理程序时,AutoCAD 通常正在处理命令。因此,如果事件处理程序要与 AutoCAD 及其数据库一起提供安全操作,则它们对可以执行的操作有一些限制。

  • 不要依赖事件的顺序。

    编写事件处理程序时,不要依赖于事件的顺序,以您认为发生的确切顺序发生。例如,如果发出 OPEN 命令,则事件,,, 和 都将被触发。但是,它们可能不会按该顺序出现。唯一可以安全依赖的事件序列是 Begin 事件将在相应的 End 事件之前发生。在前面的示例中,事件可能按以下顺序触发:,,, 和,甚至,,,和。BeginCommandBeginOpenEndOpenEndCommandBeginCommandBeginOpenEndCommandEndOpenBeginCommandEndCommandBeginOpenEndOpen

  • 不要依赖操作顺序。

    如果先删除对象 1,然后删除对象 2,则不要依赖于将接收对象 1 和对象 2 的事件这一事实。您可能会首先收到对象 2 的事件。ObjectErasedObjectErased

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

    尝试从事件处理程序中执行交互式函数可能会导致严重问题,因为在触发事件时 AutoCAD 可能仍在处理命令。因此,应始终避免使用输入获取方法(如,,,等),以及事件处理程序中的选择集操作和方法。GetPointGetEntityGetKeywordSendCommand

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

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

  • 可以将数据写入数据库中的任何对象,但发出事件的对象除外。

    显然,任何导致触发事件的对象仍然可以打开,以便与AutoCAD和当前正在进行的操作一起使用。因此,请避免从同一对象的事件处理程序向对象写入任何信息。但是,您可以安全地从触发事件的对象读取信息。例如,假设您有一个填充了瓷砖的楼层,并且您创建了一个附加到楼层边框的事件处理程序。如果更改楼层的大小,事件处理程序将自动添加或减去图块以填充新区域。事件处理程序将能够读取边界的新区域,但它不能尝试对边框本身进行任何更改。

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

    如果在触发同一事件的事件处理程序中执行相同的操作,则将创建无限循环。例如,切勿尝试从事件中打开图形,否则 AutoCAD 只会继续打开更多图形,直到达到打开图形的最大数量。BeginOpen

  • 请记住,当 AutoCAD 显示模式对话框时,不会触发任何事件。

路过

雷人

握手

鲜花

鸡蛋

最新评论

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

GMT+8, 2024-5-11 18:56

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部