RoutedEventArgs.Handled 属性

定义

获取或设置一个值,该值指示路由事件在传输路由时的事件处理的当前状态。

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) 方法调用中专门添加 HandledEventsTootrue 的处理程序。 不会调用实例侦听器(如以可扩展应用程序标记语言(XAML)表示的默认处理程序。 处理标记为已处理的事件并不常见。

如果你是定义自己的事件的控件作者,则你在类级别对事件处理做出的决策将影响控件的用户以及派生控件的任何用户,以及可能包含控件或包含控件的其他元素。 有关详细信息,请参阅 将路由事件标记为已处理,以及类处理

在极少数情况下,处理 Handled 标记为 true的事件,并通过将 Handled 更改为 false来修改事件参数。 这在控件输入事件的某些方面是必需的,例如关键处理 KeyDownTextInput 低级别和高级输入事件争用处理,并且每个事件都尝试使用不同的路由策略。

适用于