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
的處理程式。 不會叫用實例接聽程式上的默認處理程式(例如以 Extensible Application Markup Language (XAML) 表示的處理程式。 處理標示為已處理的事件並非常見案例。
如果您是定義您自己的事件的控制項作者,您在類別層級處理事件時所做的決策會影響控件的使用者以及衍生控件的任何使用者,以及可能由控制項包含或包含控制項的其他元素。 如需詳細資訊,請參閱 將路由事件標示為已處理,以及類別處理。
在非常罕見的情況下,處理 Handled 標示為 true
的事件,並藉由將 Handled 變更為 false
來修改事件自變數。 這在控件輸入事件的某些區域中是必要的,例如 KeyDown 的關鍵處理與 TextInput 低階和高階輸入事件競爭處理,而且每個專案都嘗試使用不同的路由策略。