EventManager.RegisterClassHandler Metodo

Definizione

Registra un gestore classi per un determinato evento indirizzato.

Overload

Nome Descrizione
RegisterClassHandler(Type, RoutedEvent, Delegate)

Registra un gestore classi per un determinato evento indirizzato.

RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean)

Registra un gestore di classi per un determinato evento indirizzato, con l'opzione per gestire gli eventi in cui i dati dell'evento sono già contrassegnati come gestiti.

RegisterClassHandler(Type, RoutedEvent, Delegate)

Registra un gestore classi per un determinato evento indirizzato.

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)

Parametri

classType
Type

Tipo della classe che dichiara la gestione delle classi.

routedEvent
RoutedEvent

Identificatore dell'evento indirizzato da gestire.

handler
Delegate

Riferimento all'implementazione del gestore classi.

Esempio

Nell'esempio seguente viene aggiunto un gestore per PreviewMouseRightButtonDownEvent, chiamando 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

Commenti

La gestione delle classi è una funzionalità disponibile per gli eventi indirizzati, inclusi gli eventi associati implementati con il backup degli eventi indirizzati. Un gestore di classi è simile a un gestore statico esistente per tutte le istanze della classe . Poiché il gestore è statico, non è possibile modificare le proprietà dell'istanza direttamente con un gestore di classi, ma è possibile accedere alle istanze tramite il sender parametro e/o i dati dell'evento.

I gestori di classe vengono richiamati prima dei gestori dell'istanza. È possibile implementare un gestore di classi con il comportamento di contrassegnare l'evento come gestito. Pertanto, i gestori di istanza per un evento gestito dalla classe non vengono richiamati a meno che i gestori dell'istanza non registrino in modo specifico per gli eventi gestiti.

Molti degli eventi degli elementi di base macchine virtuali Windows forniscono metodi virtuali di gestione delle classi. Eseguendo l'override di questi metodi nelle classi che ereditano le classi di base, è possibile implementare la gestione delle classi senza chiamare RegisterClassHandler nei costruttori statici. Questi metodi di gestione delle classi in genere esistono per gli eventi di input e hanno nomi che iniziano con "On" e terminano con il nome dell'evento gestito dalla classe.

Per altre informazioni sulla gestione delle classi, vedere Contrassegnare gli eventi indirizzati come gestiti e la gestione delle classi.

Usando questa firma, i gestori di classe verranno registrati per richiamare solo in risposta a eventi non gestiti. È anche possibile registrare i gestori di classe per richiamare anche se gli argomenti dell'evento sono contrassegnati come gestiti, usando la RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) firma, con handledEventsToo impostato su true.

Si applica a

RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean)

Registra un gestore di classi per un determinato evento indirizzato, con l'opzione per gestire gli eventi in cui i dati dell'evento sono già contrassegnati come gestiti.

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)

Parametri

classType
Type

Tipo della classe che dichiara la gestione delle classi.

routedEvent
RoutedEvent

Identificatore dell'evento indirizzato da gestire.

handler
Delegate

Riferimento all'implementazione del gestore classi.

handledEventsToo
Boolean

true per richiamare questo gestore classi anche se gli argomenti dell'evento indirizzato sono stati contrassegnati come gestiti; false per mantenere il comportamento predefinito di non richiamare il gestore in alcun evento gestito contrassegnato.

Commenti

La gestione delle classi è una funzionalità disponibile per gli eventi indirizzati, inclusi gli eventi associati implementati con il backup degli eventi indirizzati. Un gestore di classi è simile a un gestore statico esistente per tutte le istanze della classe . Poiché il gestore è statico, non è possibile modificare le proprietà dell'istanza direttamente con un gestore di classi, ma è possibile accedere alle istanze tramite il sender parametro e/o i dati dell'evento.

I gestori di classe vengono richiamati prima dei gestori dell'istanza. È possibile implementare un gestore di classi con il comportamento di contrassegnare l'evento come gestito. Pertanto, i gestori di istanza per un evento gestito dalla classe non vengono richiamati a meno che i gestori dell'istanza non registrino in modo specifico per gli eventi gestiti.

Molti degli eventi degli elementi di base macchine virtuali Windows forniscono metodi virtuali di gestione delle classi. Eseguendo l'override di questi metodi nelle classi che ereditano le classi di base, è possibile implementare la gestione delle classi senza chiamare RegisterClassHandler nei costruttori statici. Questi metodi di gestione delle classi in genere esistono per gli eventi di input e hanno nomi che iniziano con "On" e terminano con il nome dell'evento gestito dalla classe.

Per altre informazioni sulla gestione delle classi, vedere Contrassegnare gli eventi indirizzati come gestiti e la gestione delle classi.

Usando questa firma, i gestori di classe possono essere registrati per richiamare gli eventi gestiti impostando handledEventsToo su true. In genere, è consigliabile eseguire questa operazione solo se si verifica un problema noto di gestione che si sta tentando di risolvere, ad esempio la gestione del sistema di input da eventi del mouse o della tastiera.

Si applica a