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) ) 表示的处理程序。 处理标记为已处理的事件并不常见。

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

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

适用于