Event.SetFilterCommands 方法 (Visio)
指定命令区域数组以及 True 或 False 值,指示如何筛选每个命令区域的事件。
语法
expression。 SetFilterCommands
( _Commands()_
)
表达 一个代表 Event 对象的变量。
参数
名称 | 必需/可选 | 数据类型 | 说明 |
---|---|---|---|
Commands () | 必需 | Long | 命令区域数组以及 True 或 False 值,指定如何筛选每个命令区域的事件。 |
返回值
Nothing
注解
将使用 AddAdvise 方法创建的 Event 对象添加到源对象的 EventList 集合中时,默认行为是该事件的所有匹配项都被传递给事件接收器。 SetFilterCommands 方法提供根据命令 ID 忽略选定事件的方式。
传递给 SetFilterCommands 的 Commands() 参数是采用以下方式定义的数组。
Commands() 中的元素数为 3 的倍数:
第一个元素包含区域的开始命令 ID(VisUICmds 的任何成员)。
第二个元素包含区域的结束命令 ID(VisUICmds的任何成员)。
第三个元素包含 True 或 False 值,指示是否侦听该命令区域的事件(True 表示侦听事件;False 表示排除事件)。
若要使事件成功地通过命令筛选,它必须满足以下条件:
必须具有有效的命令 ID。
如果所有的筛选器都为 True,则事件必须至少与一个筛选器匹配。
如果所有的筛选器都为 False,则事件一定与任何筛选器都不匹配。
如果筛选器为 True 和 False 的混合,则事件必须至少与一个 True 筛选器匹配,但一定不能与任何 False 筛选器匹配。
如果在数组中没有 True 区域,则将事件视为 True。
例如,若要设置一个阻塞单个命令的数组,则可以使用以下代码:
Dim aFilterCommands(1 To (1 * 3)) As Long
'Ignore the layout command.
aFilterCommands(1) = visCmdLayoutDynamic
aFilterCommands(2) = visCmdLayoutDynamic
aFilterCommands(3) = False
或者,若要设置一个仅侦听“置于底层”命令的数组,请使用以下代码:
Dim aFilterCommands(1 To (3 * 3)) As Long
'Pay attention to the "Send to Back" command.
aFilterCommands(1) = visCmdObjectSendToBack
aFilterCommands(2) = visCmdObjectSendToBack
aFilterCommands(3) = True
'Ignore any command IDs before the "Send to Back" command.
aFilterCommands(4) = visCmdFirst
aFilterCommands(5) = visCmdObjectSendToBack - 1
aFilterCommands(6) = False
'Ignore any command IDs after the "Send to Back" command.
aFilterCommands(7) = visCmdObjectSendToBack + 1
aFilterCommands(8) = visCmdLast
aFilterCommands(9) = False
支持和反馈
有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。