EventManager.RegisterClassHandler Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Iscrive un gestore della classe per un particolare evento indirizzato.
Overload
RegisterClassHandler(Type, RoutedEvent, Delegate) |
Iscrive un gestore della classe per un particolare evento indirizzato. |
RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) |
Registra un gestore della classe per un particolare evento indirizzato, con l'opzione di gestire gli eventi in cui i dati degli eventi sono già contrassegnati come gestiti. |
RegisterClassHandler(Type, RoutedEvent, Delegate)
Iscrive un gestore della classe per un particolare 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
Il tipo della classe che dichiara la gestione della classe.
- routedEvent
- RoutedEvent
L'identificatore dell'evento indirizzato dell'evento da gestire.
- handler
- Delegate
Un riferimento all'implementazione del gestore di classe.
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 collegati implementati con il backup degli eventi indirizzati. Un gestore di classi è simile a un gestore statico che esiste 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 classi vengono richiamati prima dei gestori di istanze. È possibile implementare un gestore di classi con il comportamento del contrassegno dell'evento come gestito. Pertanto, i gestori di istanze per un evento gestito dalla classe non vengono richiamati a meno che i gestori di istanze registrino in modo specifico per gli eventi gestiti.
Molti degli eventi dell'elemento di base WPF 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 esistono in genere per gli eventi di input e hanno nomi che iniziano con "On" e terminano con il nome della classe gestita dall'evento.
Per altre informazioni sulla gestione delle classi, vedere Contrassegnare gli eventi indirizzati come gestiti e gestione delle classi.
Usando questa firma, i gestori di classi verranno registrati per richiamare solo in risposta agli eventi non gestiti. È anche possibile registrare gestori di classi per richiamare anche se gli argomenti dell'evento vengono 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 della classe per un particolare evento indirizzato, con l'opzione di gestire gli eventi in cui i dati degli eventi 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
Il tipo della classe che dichiara la gestione della classe.
- routedEvent
- RoutedEvent
L'identificatore dell'evento indirizzato dell'evento da gestire.
- handler
- Delegate
Un riferimento all'implementazione del gestore di classe.
- handledEventsToo
- Boolean
true
per richiamare questo gestore della classe anche se gli argomenti dell'evento indirizzato sono stati contrassegnati come gestiti; false
per mantenere il comportamento predefinito di non richiamare il gestore su qualsiasi evento contrassegnato come gestito.
Commenti
La gestione delle classi è una funzionalità disponibile per gli eventi indirizzati, inclusi gli eventi collegati implementati con il backup degli eventi indirizzati. Un gestore di classi è simile a un gestore statico che esiste 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 classi vengono richiamati prima dei gestori di istanze. È possibile implementare un gestore di classi con il comportamento del contrassegno dell'evento come gestito. Pertanto, i gestori di istanze per un evento gestito dalla classe non vengono richiamati a meno che i gestori di istanze registrino in modo specifico per gli eventi gestiti.
Molti degli eventi dell'elemento di base WPF 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 esistono in genere per gli eventi di input e hanno nomi che iniziano con "On" e terminano con il nome della classe gestita dall'evento.
Per altre informazioni sulla gestione delle classi, vedere Contrassegnare gli eventi indirizzati come gestiti e gestione delle classi.
Usando questa firma, i gestori di classi possono essere registrati per richiamare gli eventi gestiti impostando handledEventsToo
su true
. In genere, è consigliabile eseguire questa operazione solo se si verifica un problema di gestione noto che si sta tentando di aggirare, ad esempio la gestione del sistema di input da eventi del mouse o della tastiera.