RoutedEventArgs.Handled 屬性

定義

取得或設定值,這個值表示路由事件移動路由時之事件處理的目前狀態。

C#
public bool Handled { [System.Security.SecurityCritical] get; [System.Security.SecurityCritical] set; }
C#
public bool Handled { get; set; }

屬性值

如果設定,請將 設定為 true 事件是否標示為已處理;否則 false。 如果讀取這個值,true 表示類別處理程式或路由上的某些實例處理程式已標示為已處理這個事件。 false.表示沒有這類處理程式標示已處理的事件。

預設值為 false

屬性

範例

下列範例會實作事件處理程式,以標記已處理的事件。

C#
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);
}

備註

標示處理的事件會將路由事件的可見性限制為事件路由的接聽程式。 事件仍會移動路由的其餘部分,但只會在回應中叫用 AddHandler(RoutedEvent, Delegate, Boolean) 方法呼叫中特別新增 HandledEventsTootrue 的處理程式。 不會叫用實例接聽程式上的默認處理程式(例如以 Extensible Application Markup Language (XAML) 表示的處理程式。 處理標示為已處理的事件並非常見案例。

如果您是定義您自己的事件的控制項作者,您在類別層級處理事件時所做的決策會影響控件的使用者以及衍生控件的任何使用者,以及可能由控制項包含或包含控制項的其他元素。 如需詳細資訊,請參閱 將路由事件標示為已處理,以及類別處理

在非常罕見的情況下,處理 Handled 標示為 true的事件,並藉由將 Handled 變更為 false來修改事件自變數。 這在控件輸入事件的某些區域中是必要的,例如 KeyDown 的關鍵處理與 TextInput 低階和高階輸入事件競爭處理,而且每個專案都嘗試使用不同的路由策略。

適用於

產品 版本
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10