RoutedEventArgs.Handled 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取或设置一个值,该值指示路由事件在传输路由时的事件处理的当前状态。
public:
property bool Handled { bool get(); void set(bool value); };
public bool Handled { [System.Security.SecurityCritical] get; [System.Security.SecurityCritical] set; }
public bool Handled { get; set; }
[<get: System.Security.SecurityCritical>]
[<set: System.Security.SecurityCritical>]
member this.Handled : bool with get, set
member this.Handled : bool with get, set
Public Property Handled As Boolean
属性值
如果设置,则设置为 true
事件是否标记为已处理;否则 false
。 如果读取此值,true
指示类处理程序或路由上的某些实例处理程序已标记此事件已处理。
false
.指示没有此类处理程序标记已处理的事件。
默认值为 false
。
- 属性
示例
以下示例实现一个事件处理程序,用于标记已处理的事件。
protected override void OnPreviewMouseRightButtonDown(System.Windows.Input.MouseButtonEventArgs e)
{
e.Handled = true; //suppress the click event and other leftmousebuttondown responders
MyEditContainer ec = (MyEditContainer)e.Source;
if (ec.EditState)
{ ec.EditState = false; }
else
{ ec.EditState = true; }
base.OnPreviewMouseRightButtonDown(e);
}
Protected Overrides Sub OnPreviewMouseRightButtonDown(ByVal e As System.Windows.Input.MouseButtonEventArgs)
e.Handled = True 'suppress the click event and other leftmousebuttondown responders
Dim ec As MyEditContainer = CType(e.Source, MyEditContainer)
If ec.EditState Then
ec.EditState = False
Else
ec.EditState = True
End If
MyBase.OnPreviewMouseRightButtonDown(e)
End Sub
注解
标记处理的事件会将路由事件的可见性限制为事件路由路由的侦听器。 该事件仍会传输路由的其余部分,但只会在响应中调用 AddHandler(RoutedEvent, Delegate, Boolean) 方法调用中专门添加 HandledEventsToo
true
的处理程序。 不会调用实例侦听器(如以可扩展应用程序标记语言(XAML)表示的默认处理程序。 处理标记为已处理的事件并不常见。
如果你是定义自己的事件的控件作者,则你在类级别对事件处理做出的决策将影响控件的用户以及派生控件的任何用户,以及可能包含控件或包含控件的其他元素。 有关详细信息,请参阅 将路由事件标记为已处理,以及类处理。
在极少数情况下,处理 Handled 标记为 true
的事件,并通过将 Handled 更改为 false
来修改事件参数。 这在控件输入事件的某些方面是必需的,例如关键处理 KeyDown 与 TextInput 低级别和高级输入事件争用处理,并且每个事件都尝试使用不同的路由策略。