UIElement.OnMouseUp(MouseButtonEventArgs) 方法


當未處理的 MouseUp 路由事件到達其路由中衍生自此類別的項目時叫用。Invoked when an unhandled MouseUp routed event reaches an element in its route that is derived from this class. 實作這個方法可為此事件加入類別處理。Implement this method to add class handling for this event.

 virtual void OnMouseUp(System::Windows::Input::MouseButtonEventArgs ^ e);
protected virtual void OnMouseUp (System.Windows.Input.MouseButtonEventArgs e);
abstract member OnMouseUp : System.Windows.Input.MouseButtonEventArgs -> unit
override this.OnMouseUp : System.Windows.Input.MouseButtonEventArgs -> unit
Protected Overridable Sub OnMouseUp (e As MouseButtonEventArgs)



包含事件資料的 MouseButtonEventArgsThe MouseButtonEventArgs that contains the event data. 事件資料會報告滑鼠按鈕已釋放。The event data reports that the mouse button was released.


滑鼠按鍵動作也會由專用的輸入管理員來處理。Mouse button actions are also handled by a dedicated input manager. 其他依賴滑鼠按鍵動作的程式設計功能(例如輸入和命令系結)可能會叫用動作的處理常式,然後才將其公開為一般滑鼠按鍵動作。Other programming features that rely on mouse button actions, such as input and command bindings, might invoke handlers for the action before it is exposed as a general mouse button action. 如果這些輸入系統功能將 Mouse.MouseUp 事件標示為已處理, OnMouseUp 則不會叫用。If these input system features mark the Mouse.MouseUp event as handled, OnMouseUp is not invoked.

如果您使用這個類別處理常式將事件標示為已處理,您可能會影響下列事件: MouseLeftButtonUpMouseRightButtonUpIf you use this class handler to mark the event as handled, you potentially impact the following events: MouseLeftButtonUp and MouseRightButtonUp. 當收到時,可能會在接收的元素上引發這些事件的任一個 Mouse.MouseUpEither of these events might be raised on the receiving element when Mouse.MouseUp is received.

如果您在類別處理中將此事件標示為已處理,則仍會引發 subevents;不過,它們會在事件資料中傳遞已處理的狀態。If you mark this event as handled in class handling, subevents are still raised; however, they pass the handled state in the event data. 如果事件是以類別處理處理,除非您明確地使用 AddHandler(RoutedEvent, Delegate, Boolean) with handledEventsToo true 來附加處理常式,否則不會叫用 subevents 的實例處理常式。If the event is handled in class handling, instance handlers for the subevents are not invoked unless you explicitly use AddHandler(RoutedEvent, Delegate, Boolean) with handledEventsToo true in order to attach handlers. 您也不會叫用類別處理常式,除非已使用簽章來註冊這些類別處理常式 RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) handledEventsToo trueClass handlers also are not invoked unless those class handlers were registered with the RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) signature with handledEventsToo true. 藉由處理 OnMouseUp ,您表示您的類別處理是針對所有可能的滑鼠按鍵動作所組成。By handling OnMouseUp, you are implying that your class handling accounted for all possible mouse button up actions. 這種行為可能不是必要的;因此,當您使用此虛擬方法將事件標示為已處理時,請謹慎使用。This behavior might be unwanted; Therefore, use caution when you use this virtual method to mark events as handled.

每個按鈕特定的直接事件也都有虛擬 On * 方法;考慮是否要覆寫這些按鈕特定的類別處理常式,可能更適合。Each of the button-specific direct events also has a virtual On* method; consider whether overriding these button-specific class handlers might be more appropriate.

這個方法沒有預設的實值。This method has no default implementation. 因為繼承中的中繼類別可能會執行此方法,所以我們建議您在執行時呼叫基底實作為。Because an intermediate class in the inheritance might implement this method, we recommend that you call the base implementation in your implementation.

這個方法的用途類似于 通用語言執行平台 (CLR)common language runtime (CLR) * 方法上的事件模式:此方法提供的方法,是藉由建立類別處理常式,而不是實例處理常式,來處理衍生類別的相符事件。The purpose of this method is similar to the 通用語言執行平台 (CLR)common language runtime (CLR) event pattern On* methods: this method provides the means to handle the matching event from derived classes by establishing a class handler instead of an instance handler. 在此情況下,比對事件是路由事件。In this case the matching event is a routed event. On * 方法的真實模式與路由事件不同,因為路由事件可以由子項目引發,這不一定是將叫用處理程式的元素。The implementation pattern of the On* methods is different for routed events because a routed event can be raised by a child element, which is not necessarily the element that will invoke handlers. 因此,您的執行必須檢查事件資料的來源屬性。Therefore, your implementation needs to examine the source properties of the event data. 在大部分情況下,它不應該嘗試 reraise 事件。It should not try to reraise the event in most cases.

藉由覆寫這個方法或向註冊類別處理常式 RegisterClassHandler ,的衍生類別 UIElement 可以在事件路由收到事件時呼叫私用類別處理常式方法。Either by overriding this method or by registering class handlers with RegisterClassHandler, derived classes of UIElement can call private class handler methods when the event is received along the event route. 適當類別處理的其中一個情況是操作事件資料,並將路由事件標示為已處理。One scenario where class handling is appropriate is to manipulate the event data and mark the routed event as handled.