Event.SetFilterCommands 方法 (Visio)

指定命令区域数组以及 TrueFalse 值,指示如何筛选每个命令区域的事件。

语法

expressionSetFilterCommands( _Commands()_ )

表达 一个代表 Event 对象的变量。

参数

名称 必需/可选 数据类型 说明
Commands () 必需 Long 命令区域数组以及 TrueFalse 值,指定如何筛选每个命令区域的事件。

返回值

Nothing

注解

将使用 AddAdvise 方法创建的 Event 对象添加到源对象的 EventList 集合中时,默认行为是该事件的所有匹配项都被传递给事件接收器。 SetFilterCommands 方法提供根据命令 ID 忽略选定事件的方式。

传递给 SetFilterCommandsCommands() 参数是采用以下方式定义的数组。

Commands() 中的元素数为 3 的倍数:

  • 第一个元素包含区域的开始命令 ID(VisUICmds 的任何成员)。

  • 第二个元素包含区域的结束命令 ID(VisUICmds的任何成员)。

  • 第三个元素包含 TrueFalse 值,指示是否侦听该命令区域的事件(True 表示侦听事件;False 表示排除事件)。

若要使事件成功地通过命令筛选,它必须满足以下条件:

  • 必须具有有效的命令 ID。

  • 如果所有的筛选器都为 True,则事件必须至少与一个筛选器匹配。

  • 如果所有的筛选器都为 False,则事件一定与任何筛选器都不匹配。

  • 如果筛选器为 TrueFalse 的混合,则事件必须至少与一个 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 支持和反馈,获取有关如何接收支持和提供反馈的指南。