Lire en anglais

Partager via


IEventBindingService Interface

Définition

Fournit un service permettant l'inscription de gestionnaires d'événements pour les événements de composants.

C#
public interface IEventBindingService
C#
[System.Runtime.InteropServices.ComVisible(true)]
public interface IEventBindingService
Dérivé
Attributs

Exemples

L’exemple suivant illustre un concepteur qui utilise pour lier l’événement IEventBindingService d’un composant à un gestionnaire d’événements au moment de la conception lorsque la commande de menu contextuel personnalisée que le concepteur ajoute pour le composant est appelée. Pour utiliser l’exemple, compilez-le dans une bibliothèque de classes, ajoutez une référence à partir d’un projet Windows Forms, ajoutez le composant de la bibliothèque de classes à la boîte à outils en cliquant avec le bouton droit sur la boîte à outils et en sélectionnant Personnaliser la boîte à outils, puis en choisissant la bibliothèque de classes et en cliquant sur OK, puis ajoutez un instance de l’EventControl à un formulaire. Cliquez ensuite avec le bouton droit sur EventControl et cliquez sur la commande de menu contextuel Connecter testEvent. Une méthode de gestionnaire d’événements vide est créée et la méthode testEvent d’EventControl est initialisée dans ce gestionnaire d’événements dans le code d’initialisation du formulaire.

C#
using System;
using System.Collections;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Drawing;
using System.Data;
using System.Windows.Forms;
using System.Windows.Forms.Design;

namespace EventDesignerTest
{
    // This designer provides a "Connect testEvent" designer verb shortcut 
    // menu command. When invoked, the command attaches a new event-handler 
    // method named "testEventHandler" to the "testEvent" event of an 
    // associated control.
    // If a "testEvent" event of the associated control does not exist, 
    // the IEventBindingService declares it.
    public class EventDesigner : System.Windows.Forms.Design.ControlDesigner
    {
        public EventDesigner()
        {
        }
        
        // When the "Connect testEvent" designer verb shortcut menu 
        // command is invoked, this method uses the 
        // IEventBindingService to attach an event handler to a 
        // "textEvent" event of the associated control.
        private void ConnectEvent(object sender, EventArgs e)
        {
            IEventBindingService eventservice = (IEventBindingService)this.Component.Site.GetService(typeof(System.ComponentModel.Design.IEventBindingService));
            if( eventservice != null )
            {
                // Attempt to obtain a PropertyDescriptor for a 
                // component event named "testEvent".
                EventDescriptorCollection edc = TypeDescriptor.GetEvents(this.Component);				
                if( edc == null || edc.Count == 0 )
                    return;
                                
                EventDescriptor ed = null;
                // Search for an event named "testEvent".
                foreach(EventDescriptor edi in edc)
                    if(edi.Name == "testEvent")
                    {
                        ed = edi;
                        break;
                    }
                if( ed == null )
                    return;

                // Use the IEventBindingService to get a 
                // PropertyDescriptor for the event.
                PropertyDescriptor pd = eventservice.GetEventProperty(ed);
                if( pd == null )
                    return;				
                
                // Set the value of the event to "testEventHandler".
                pd.SetValue(this.Component, "testEventHandler");
            }
        }

                // Provides a designer verb command for the designer's 
                // shortcut menu.
        public override System.ComponentModel.Design.DesignerVerbCollection Verbs
        {
            get
            {
                DesignerVerbCollection dvc = new DesignerVerbCollection();
                dvc.Add(new DesignerVerb("Connect testEvent", new EventHandler(ConnectEvent)));
                return dvc;
            }
        }
    }

    // EventControl is associated with the EventDesigner and displays 
    // instructions for demonstrating the service.
    [Designer(typeof(EventDesigner))]
    public class EventControl : System.Windows.Forms.UserControl
    {
        public event System.EventHandler testEvent;

        public EventControl()
        {		
            this.BackColor = Color.White;	
            this.Size = new Size(320, 96);
        }

        protected override void Dispose( bool disposing )
        {
            base.Dispose( disposing );
        }

        protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
        {
            e.Graphics.DrawString("IEventBindingService Example Control", new Font(FontFamily.GenericMonospace, 10), new SolidBrush(Color.Blue), 5, 5);
            
            e.Graphics.DrawString("Use the \"Connect testEvent\" command of the", new Font(FontFamily.GenericMonospace, 8), new SolidBrush(Color.Black), 5, 22);
            e.Graphics.DrawString("right-click shortcut menu provided by this", new Font(FontFamily.GenericMonospace, 8), new SolidBrush(Color.Black), 5, 32);
            e.Graphics.DrawString("control's associated EventDesigner to create", new Font(FontFamily.GenericMonospace, 8), new SolidBrush(Color.Black), 5, 42);
            e.Graphics.DrawString("a new event handler linked with the testEvent", new Font(FontFamily.GenericMonospace, 8), new SolidBrush(Color.Black), 5, 52);
            e.Graphics.DrawString("of this control in the initialization code", new Font(FontFamily.GenericMonospace, 8), new SolidBrush(Color.Black), 5, 62);
            e.Graphics.DrawString("for this control.", new Font(FontFamily.GenericMonospace, 8), new SolidBrush(Color.Black), 5, 72);
        }
    }
}

Remarques

Le service de liaison d’événements permet de lier un gestionnaire d’événements à un événement de composant à partir du code du concepteur.

Pour lier un gestionnaire d’événements à un événement de composant à l’aide du IEventBindingService, vous devez d’abord obtenir un EventDescriptor pour l’événement du composant que vous envisagez de lier. Fournit IEventBindingService des méthodes qui peuvent convertir un EventDescriptor en que PropertyDescriptor vous pouvez utiliser pour configurer l’événement avec un nom de méthode de gestionnaire d’événements.

L’objet TypeDescriptor fournit une GetEvents méthode que vous pouvez utiliser pour obtenir un EventDescriptorCollection objet contenant EventDescriptor pour chaque événement d’un composant. Les GetEventProperty méthodes et GetEventProperties de retournent IEventBindingService un pour chacune d’elles EventDescriptor passée à l’une PropertyDescriptor ou l’autre méthode. Chaque PropertyDescriptor retourné à partir de GetEventProperty ou GetEventProperties a un type de propriété de chaîne. Vous pouvez définir cette chaîne sur une valeur qui indique le nom de la méthode de gestionnaire d’événements avec laquelle lier l’événement à l’aide de la SetValue méthode du PropertyDescriptor.

Méthodes

CreateUniqueMethodName(IComponent, EventDescriptor)

Crée un nom unique pour une méthode de gestionnaire d'événements pour le composant et l'événement spécifiés.

GetCompatibleMethods(EventDescriptor)

Obtient une collection de méthodes de gestionnaire d'événements possédant une signature de méthode compatible avec l'événement spécifié.

GetEvent(PropertyDescriptor)

Obtient EventDescriptor pour l'événement représenté par le descripteur de propriété spécifié, s'il représente un événement.

GetEventProperties(EventDescriptorCollection)

Convertit un ensemble de descripteurs d'événement en un ensemble de descripteurs de propriété.

GetEventProperty(EventDescriptor)

Convertit un descripteur d'événement unique en un descripteur de propriété.

ShowCode()

Affiche le code utilisateur du concepteur.

ShowCode(IComponent, EventDescriptor)

Affiche le code utilisateur de l'événement spécifié.

ShowCode(Int32)

Affiche le code utilisateur du concepteur à la ligne spécifiée.

S’applique à

Produit Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Voir aussi