EventManager.RegisterClassHandler Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Enregistre un gestionnaire de classe pour un événement routé particulier.
Surcharges
RegisterClassHandler(Type, RoutedEvent, Delegate) |
Enregistre un gestionnaire de classe pour un événement routé particulier. |
RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) |
Enregistre un gestionnaire de classe pour un événement routé particulier, avec la possibilité de gérer des événements dans lesquels les données d'événement sont déjà marquées gérées. |
RegisterClassHandler(Type, RoutedEvent, Delegate)
Enregistre un gestionnaire de classe pour un événement routé particulier.
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)
Paramètres
- classType
- Type
Type de la classe qui déclare la gestion de classe.
- routedEvent
- RoutedEvent
Identificateur d'événement routé de l'événement à gérer.
- handler
- Delegate
Référence à l'implémentation du gestionnaire de classe.
Exemples
L’exemple suivant ajoute un gestionnaire pour PreviewMouseRightButtonDownEvent, appelant 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
Remarques
La gestion des classes est une fonctionnalité disponible pour les événements routés, y compris les événements joints qui sont implémentés avec un stockage d’événements routés. Un gestionnaire de classes est comme un gestionnaire statique qui existe pour toutes les instances de la classe. Étant donné que le gestionnaire est statique, vous ne pouvez pas modifier instance propriétés directement avec un gestionnaire de classes, mais vous pouvez accéder aux instances via le sender
paramètre et/ou les données d’événement.
Les gestionnaires de classes sont appelés avant instance gestionnaires. Vous pouvez implémenter un gestionnaire de classes qui a le comportement de marquer l’événement comme géré. Par conséquent, les gestionnaires de instance pour un événement géré par la classe ne sont pas appelés, sauf si les gestionnaires de instance s’inscrivent spécifiquement pour les événements gérés.
La plupart des événements d’élément de base WPF fournissent des méthodes virtuelles de gestion de classe. En remplaçant ces méthodes dans des classes qui héritent des classes de base, vous pouvez implémenter la gestion des classes sans appeler RegisterClassHandler des constructeurs statiques. Ces méthodes de gestion de classe existent généralement pour les événements d’entrée et ont des noms qui commencent par « On » et se terminent par le nom de l’événement géré par la classe.
Pour plus d’informations sur la gestion des classes, consultez Marquage des événements routés en tant que handled et Gestion des classes.
À l’aide de cette signature, les gestionnaires de classes sont inscrits pour appeler uniquement en réponse à des événements non pris en charge. Vous pouvez également inscrire des gestionnaires de classes à appeler même si les arguments d’événement sont marqués gérés, à l’aide de la RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) signature, avec handledEventsToo
la valeur définie sur true
.
S’applique à
RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean)
Enregistre un gestionnaire de classe pour un événement routé particulier, avec la possibilité de gérer des événements dans lesquels les données d'événement sont déjà marquées gérées.
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)
Paramètres
- classType
- Type
Type de la classe qui déclare la gestion de classe.
- routedEvent
- RoutedEvent
Identificateur d'événement routé de l'événement à gérer.
- handler
- Delegate
Référence à l'implémentation du gestionnaire de classe.
- handledEventsToo
- Boolean
true
pour appeler ce gestionnaire de classe même si les arguments de l'événement routé ont été marqués comme gérés ; false
pour conserver le comportement par défaut qui consiste à ne pas appeler le gestionnaire sur tout événement marqué géré.
Remarques
La gestion des classes est une fonctionnalité disponible pour les événements routés, y compris les événements joints qui sont implémentés avec un stockage d’événements routés. Un gestionnaire de classes est comme un gestionnaire statique qui existe pour toutes les instances de la classe. Étant donné que le gestionnaire est statique, vous ne pouvez pas modifier instance propriétés directement avec un gestionnaire de classes, mais vous pouvez accéder aux instances via le sender
paramètre et/ou les données d’événement.
Les gestionnaires de classes sont appelés avant instance gestionnaires. Vous pouvez implémenter un gestionnaire de classes qui a le comportement de marquer l’événement comme géré. Par conséquent, les gestionnaires de instance pour un événement géré par la classe ne sont pas appelés, sauf si les gestionnaires de instance s’inscrivent spécifiquement pour les événements gérés.
La plupart des événements d’élément de base WPF fournissent des méthodes virtuelles de gestion de classe. En remplaçant ces méthodes dans des classes qui héritent des classes de base, vous pouvez implémenter la gestion des classes sans appeler RegisterClassHandler des constructeurs statiques. Ces méthodes de gestion de classe existent généralement pour les événements d’entrée et ont des noms qui commencent par « On » et se terminent par le nom de l’événement géré par la classe.
Pour plus d’informations sur la gestion des classes, consultez Marquage des événements routés en tant que handled et Gestion des classes.
À l’aide de cette signature, les gestionnaires de classes peuvent être inscrits pour être appelés sur des événements gérés, en définissant handledEventsToo
true
sur . En règle générale, vous devez effectuer cette opération uniquement s’il existe un problème de gestion connu que vous essayez de contourner, tel que la gestion du système d’entrée à partir d’événements de souris ou de clavier.