EventManager.RegisterClassHandler Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Zaregistruje obslužnou rutinu třídy pro konkrétní směrovanou událost.
Přetížení
RegisterClassHandler(Type, RoutedEvent, Delegate) |
Zaregistruje obslužnou rutinu třídy pro konkrétní směrovanou událost. |
RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) |
Registruje obslužnou rutinu třídy pro konkrétní směrovanou událost s možností zpracování událostí, kde jsou data událostí již označena jako zpracována. |
RegisterClassHandler(Type, RoutedEvent, Delegate)
Zaregistruje obslužnou rutinu třídy pro konkrétní směrovanou událost.
public:
static void RegisterClassHandler(Type ^ classType, System::Windows::RoutedEvent ^ routedEvent, Delegate ^ handler);
public static void RegisterClassHandler (Type classType, System.Windows.RoutedEvent routedEvent, Delegate handler);
static member RegisterClassHandler : Type * System.Windows.RoutedEvent * Delegate -> unit
Public Shared Sub RegisterClassHandler (classType As Type, routedEvent As RoutedEvent, handler As Delegate)
Parametry
- classType
- Type
Typ třídy, která deklaruje zpracování třídy.
- routedEvent
- RoutedEvent
Identifikátor směrované události události, která se má zpracovat.
- handler
- Delegate
Odkaz na implementaci obslužné rutiny třídy.
Příklady
Následující příklad přidá obslužnou rutinu pro PreviewMouseRightButtonDownEventvolání RegisterClassHandler.
static MyEditContainer()
{
EventManager.RegisterClassHandler(typeof(MyEditContainer), PreviewMouseRightButtonDownEvent, new RoutedEventHandler(LocalOnMouseRightButtonDown));
}
internal static void LocalOnMouseRightButtonDown(object sender, RoutedEventArgs e)
{
MessageBox.Show("this is invoked before the On* class handler on UIElement");
//e.Handled = true; //uncommenting this would cause ONLY the subclass' class handler to respond
}
Shared Sub New()
EventManager.RegisterClassHandler(GetType(MyEditContainer), PreviewMouseRightButtonDownEvent, New RoutedEventHandler(AddressOf LocalOnMouseRightButtonDown))
End Sub
Friend Shared Sub LocalOnMouseRightButtonDown(ByVal sender As Object, ByVal e As RoutedEventArgs)
MessageBox.Show("this is invoked before the On* class handler on UIElement")
'e.Handled = True //uncommenting this would cause ONLY the subclass' class handler to respond
End Sub
Poznámky
Zpracování tříd je funkce, která je k dispozici pro směrované události, včetně připojených událostí implementovaných se směrovaným zálohováním událostí. Obslužná rutina třídy je jako statická obslužná rutina, která existuje pro všechny instance třídy. Vzhledem k tomu, že obslužná rutina je statická, nelze měnit vlastnosti instance přímo pomocí obslužné rutiny třídy, ale k instancím můžete přistupovat prostřednictvím parametru sender
nebo dat události.
Obslužné rutiny třídy jsou vyvolány před obslužné rutiny instance. Můžete implementovat obslužnou rutinu třídy, která má chování označení události jako zpracovávané. Proto obslužné rutiny instance pro událost zpracovávanou třídou nejsou vyvolány, pokud obslužné rutiny instance registrují speciálně pro zpracovávané události.
Mnoho událostí základních elementů WPF poskytuje třídy zpracování virtuálních metod. Přepsáním těchto metod ve třídách, které dědí základní třídy, můžete implementovat zpracování tříd bez volání RegisterClassHandler statických konstruktorů. Tyto metody zpracování tříd obvykle existují pro vstupní události a mají názvy, které začínají na "On" a končí názvem události zpracovávané třídy.
Další informace o zpracování tříd najdete v tématech Označení směrovaných událostí jako zpracovaných a Zpracování tříd.
Pomocí tohoto podpisu budou obslužné rutiny tříd registrovány k vyvolání pouze v reakci na neošetřené události. Můžete také zaregistrovat obslužné rutiny třídy pro vyvolání i v případě, že jsou argumenty události označeny jako zpracovávané pomocí RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) podpisu s nastaveným handledEventsToo
na true
.
Platí pro
RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean)
Registruje obslužnou rutinu třídy pro konkrétní směrovanou událost s možností zpracování událostí, kde jsou data událostí již označena jako zpracována.
public:
static void RegisterClassHandler(Type ^ classType, System::Windows::RoutedEvent ^ routedEvent, Delegate ^ handler, bool handledEventsToo);
public static void RegisterClassHandler (Type classType, System.Windows.RoutedEvent routedEvent, Delegate handler, bool handledEventsToo);
static member RegisterClassHandler : Type * System.Windows.RoutedEvent * Delegate * bool -> unit
Public Shared Sub RegisterClassHandler (classType As Type, routedEvent As RoutedEvent, handler As Delegate, handledEventsToo As Boolean)
Parametry
- classType
- Type
Typ třídy, která deklaruje zpracování třídy.
- routedEvent
- RoutedEvent
Identifikátor směrované události události, která se má zpracovat.
- handler
- Delegate
Odkaz na implementaci obslužné rutiny třídy.
- handledEventsToo
- Boolean
true
vyvolat tuto obslužnou rutinu třídy i v případě, že argumenty směrované události byly označeny jako zpracovávané; false
, aby se zachovalo výchozí chování nevyvolání obslužné rutiny u žádné události označené jako zpracovaný.
Poznámky
Zpracování tříd je funkce, která je k dispozici pro směrované události, včetně připojených událostí implementovaných se směrovaným zálohováním událostí. Obslužná rutina třídy je jako statická obslužná rutina, která existuje pro všechny instance třídy. Vzhledem k tomu, že obslužná rutina je statická, nelze měnit vlastnosti instance přímo pomocí obslužné rutiny třídy, ale k instancím můžete přistupovat prostřednictvím parametru sender
nebo dat události.
Obslužné rutiny třídy jsou vyvolány před obslužné rutiny instance. Můžete implementovat obslužnou rutinu třídy, která má chování označení události jako zpracovávané. Proto obslužné rutiny instance pro událost zpracovávanou třídou nejsou vyvolány, pokud obslužné rutiny instance registrují speciálně pro zpracovávané události.
Mnoho událostí základních elementů WPF poskytuje třídy zpracování virtuálních metod. Přepsáním těchto metod ve třídách, které dědí základní třídy, můžete implementovat zpracování tříd bez volání RegisterClassHandler statických konstruktorů. Tyto metody zpracování tříd obvykle existují pro vstupní události a mají názvy, které začínají na "On" a končí názvem události zpracovávané třídy.
Další informace o zpracování tříd najdete v tématech Označení směrovaných událostí jako zpracovaných a Zpracování tříd.
Pomocí tohoto podpisu je možné zaregistrovat obslužné rutiny tříd k vyvolání při zpracovávaných událostech nastavením handledEventsToo
na true
hodnotu . Obecně platí, že byste to měli udělat jenom v případě, že existuje známý problém se zpracováním, který se pokoušíte vyřešit, jako je například zpracování vstupního systému z událostí myši nebo klávesnice.