Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

IEventBindingService (Interfaz)

Proporciona un servicio para registrar los controladores de eventos de los eventos de los componentes.

Espacio de nombres:  System.ComponentModel.Design
Ensamblado:  System (en System.dll)

[ComVisibleAttribute(true)]
public interface IEventBindingService

El tipo IEventBindingService expone los siguientes miembros.

  NombreDescripción
Método públicoCreateUniqueMethodNameCrea un nombre único para un método de control de eventos para el componente y evento especificados.
Método públicoGetCompatibleMethodsObtiene una colección de métodos de control de eventos que tienen una firma de método compatible con el evento especificado.
Método públicoGetEventObtiene un objeto EventDescriptor para el evento que representa el descriptor de propiedades especificado, si representa un evento.
Método públicoGetEventPropertiesConvierte un conjunto de descriptores de eventos en un conjunto de descriptores de propiedades.
Método públicoGetEventPropertyConvierte un único descriptor de eventos en un descriptor de propiedades.
Método públicoShowCode()Muestra el código de usuario del diseñador.
Método públicoShowCode(Int32)Muestra el código de usuario del diseñador en la línea especificada.
Método públicoShowCode(IComponent, EventDescriptor)Muestra el código de usuario del evento especificado.
Arriba

El servicio de enlace de eventos permite vincular un controlador de eventos con un evento de componente desde el código del diseñador.

Para vincular un controlador de eventos a un evento de componente mediante IEventBindingService, primero debe obtener EventDescriptor para el evento del componente que desea vincular. IEventBindingService proporciona métodos para convertir EventDescriptor en PropertyDescriptor, que se puede utilizar para configurar el evento con un nombre de método de control de eventos.

El objeto TypeDescriptor proporciona un método GetEvents que se puede utilizar para obtener una colección EventDescriptorCollection que contenga objetos EventDescriptor para cada evento de un componente. Los métodos GetEventProperty y GetEventProperties de IEventBindingService devuelven un objeto PropertyDescriptor para cada objeto EventDescriptor pasado a cualquiera de los métodos. Cada uno de los objetos PropertyDescriptor devueltos por los métodos GetEventProperty o GetEventProperties tiene una propiedad de tipo cadena. Esta cadena se puede establecer en un valor que indique el nombre del método de control de eventos al que se vincula el evento, mediante el método SetValue de PropertyDescriptor.

En el siguiente ejemplo, se muestra un diseñador que utiliza la interfaz IEventBindingService para vincular un evento del componente a un controlador de eventos en tiempo de diseño cuando se llama al comando de menú contextual personalizado que el diseñador agrega para el componente. Para utilizar el ejemplo, compílelo en una biblioteca de clases, agregue una referencia desde un proyecto de formularios Windows Forms, agregue el componente de la biblioteca de clases al cuadro de herramientas (para ello, haga clic con el botón secundario en Cuadro de herramientas, elija Personalizar cuadro de herramientas, seleccione la biblioteca de clases y haga clic en Aceptar) y agregue una instancia de EventControl a un formulario. A continuación, haga clic con el botón secundario en EventControl y haga clic en el comando Conectar testEvent del menú contextual. Se crea un método de control de eventos vacío y el método testEvent de EventControl se inicializa con este controlador de eventos en el código de inicialización del formulario.


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.
    [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust")] 
    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);
        }
    }
}


.NET Framework

Compatible con: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2015 Microsoft