Udostępnij za pośrednictwem


EventManager.RegisterClassHandler Metoda

Definicja

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ą handledEventsTootrue.

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.

Dotyczy