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) ) 表示的处理程序。 处理标记为已处理的事件并不常见。
如果你是定义自己的事件的控件作者,则你在类级别对事件处理所做的决策将影响控件的用户以及派生控件的任何用户,以及可能由控件包含或包含控件的其他元素。 有关详细信息,请参阅将路由事件标记为“已处理”和类处理。
在极少数情况下,最好处理标记为 true
的事件Handled,并通过将 更改为 Handled 来false
修改事件参数。 这在控件输入事件的某些方面可能是必需的,例如,与低级别和高级别输入事件争用处理的键处理KeyDownTextInput,并且每个事件都尝试使用不同的路由策略。
适用于
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈