EventManager.RegisterClassHandler Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Rejestruje procedurę obsługi klas dla określonego zdarzenia kierowanego.
Przeciążenia
RegisterClassHandler(Type, RoutedEvent, Delegate) |
Rejestruje procedurę obsługi klas dla określonego zdarzenia kierowanego. |
RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) |
Rejestruje procedurę obsługi klas dla określonego zdarzenia kierowanego z opcją obsługi zdarzeń, w których dane zdarzeń są już oznaczone jako obsługiwane. |
RegisterClassHandler(Type, RoutedEvent, Delegate)
Rejestruje procedurę obsługi klas dla określonego zdarzenia kierowanego.
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 klasy deklarujące obsługę klas.
- routedEvent
- RoutedEvent
Identyfikator zdarzenia kierowanego do obsługi.
- handler
- Delegate
Odwołanie do implementacji procedury obsługi klas.
Przykłady
W poniższym przykładzie dodano procedurę obsługi dla PreviewMouseRightButtonDownEventmetody , wywołując metodę 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
Uwagi
Obsługa klas to funkcja, która jest dostępna dla zdarzeń kierowanych, w tym dołączonych zdarzeń implementowanych przy użyciu kierowanego zaplecza zdarzeń. Procedura obsługi klas jest jak statyczna procedura obsługi, która istnieje dla wszystkich wystąpień klasy. Ponieważ program obsługi jest statyczny, nie można zmienić właściwości wystąpienia bezpośrednio za pomocą programu obsługi klas, ale można uzyskać dostęp do wystąpień za pośrednictwem parametru sender
i/lub danych zdarzenia.
Programy obsługi klas są wywoływane przed procedurami obsługi wystąpień. Można zaimplementować procedurę obsługi klas, która ma zachowanie oznaczania zdarzenia jako obsługiwanego. W związku z tym programy obsługi wystąpień dla zdarzenia obsługiwanego przez klasę nie są wywoływane, chyba że programy obsługi wystąpień zarejestrują się specjalnie w przypadku obsługiwanych zdarzeń.
Wiele zdarzeń elementu podstawowego WPF zapewnia obsługę metod wirtualnych klasy. Przesłaniając te metody w klasach, które dziedziczą klasy podstawowe, można zaimplementować obsługę klas bez wywoływania RegisterClassHandler w konstruktorach statycznych. Te metody obsługi klas zwykle istnieją dla zdarzeń wejściowych i mają nazwy rozpoczynające się od "Włączone" i kończące się nazwą obsługiwanego zdarzenia.
Aby uzyskać więcej informacji na temat obsługi klas, zobacz Oznaczanie zdarzeń trasowanych jako obsługiwane i Obsługa klas.
Korzystając z tego podpisu, programy obsługi klas zostaną zarejestrowane w celu wywołania tylko w odpowiedzi na nieobsługiwane zdarzenia. Można również zarejestrować programy obsługi klas w celu wywołania, nawet jeśli argumenty zdarzeń są oznaczone jako obsługiwane przy użyciu RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) podpisu z ustawioną wartością handledEventsToo
true
.
Dotyczy
RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean)
Rejestruje procedurę obsługi klas dla określonego zdarzenia kierowanego z opcją obsługi zdarzeń, w których dane zdarzeń są już oznaczone jako obsługiwane.
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 klasy deklarujące obsługę klas.
- routedEvent
- RoutedEvent
Identyfikator zdarzenia kierowanego do obsługi.
- handler
- Delegate
Odwołanie do implementacji procedury obsługi klas.
- handledEventsToo
- Boolean
true
aby wywołać tę procedurę obsługi klas, nawet jeśli argumenty zdarzenia kierowanego zostały oznaczone jako obsługiwane; false
aby zachować domyślne zachowanie nie wywoływania programu obsługi w żadnym zdarzeń oznaczonych do obsługi.
Uwagi
Obsługa klas to funkcja, która jest dostępna dla zdarzeń kierowanych, w tym dołączonych zdarzeń implementowanych przy użyciu kierowanego zaplecza zdarzeń. Procedura obsługi klas jest jak statyczna procedura obsługi, która istnieje dla wszystkich wystąpień klasy. Ponieważ program obsługi jest statyczny, nie można zmienić właściwości wystąpienia bezpośrednio za pomocą programu obsługi klas, ale można uzyskać dostęp do wystąpień za pośrednictwem parametru sender
i/lub danych zdarzenia.
Programy obsługi klas są wywoływane przed procedurami obsługi wystąpień. Można zaimplementować procedurę obsługi klas, która ma zachowanie oznaczania zdarzenia jako obsługiwanego. W związku z tym programy obsługi wystąpień dla zdarzenia obsługiwanego przez klasę nie są wywoływane, chyba że programy obsługi wystąpień zarejestrują się specjalnie w przypadku obsługiwanych zdarzeń.
Wiele zdarzeń elementu podstawowego WPF zapewnia obsługę metod wirtualnych klasy. Przesłaniając te metody w klasach, które dziedziczą klasy podstawowe, można zaimplementować obsługę klas bez wywoływania RegisterClassHandler w konstruktorach statycznych. Te metody obsługi klas zwykle istnieją dla zdarzeń wejściowych i mają nazwy rozpoczynające się od "Włączone" i kończące się nazwą obsługiwanego zdarzenia.
Aby uzyskać więcej informacji na temat obsługi klas, zobacz Oznaczanie zdarzeń trasowanych jako obsługiwane i Obsługa klas.
Korzystając z tego podpisu, procedury obsługi klas można zarejestrować w celu wywołania po obsługiwanych zdarzeniach, ustawiając wartość handledEventsToo
.true
Ogólnie rzecz biorąc, należy to zrobić tylko wtedy, gdy występuje znany problem z obsługą, który próbujesz obejść, na przykład obsługa systemu wejściowego zdarzeń myszy lub klawiatury.