2008-09-27 12 views
11

He creado un control WinForms que hereda de System.Windows.Forms.UserControl ... Tengo algunos eventos personalizados en el control que me gustaría que el consumidor de mi control ser capaz de ver. No puedo mostrar mis eventos en la pestaña Eventos de la ventana Propiedades durante el tiempo de diseño. Esto significa que la única manera de asignar los eventos es escribir mediante programaciónDiseño Visualización de tiempo para eventos de Control de usuario

myUserControl.MyCustomEvent += new MyUserControl.MyCustomEventHandler(EventHandlerFunction); 

esto está muy bien para mí, pero supongo que cuando alguien trata de usar mi control de usuario que no van a saber que existen estos eventos (a menos que leen la biblioteca doco ... sí, claro). Sé que el evento aparecerá con Intellisense, pero sería genial si también se mostrara en la ventana de propiedades.

Respuesta

23

Asegúrese de que sus eventos estén expuestos como públicos. Por ejemplo ...

[Browsable(true)] 
public event EventHandler MyCustomEvent; 
+0

Es un controlador de eventos público personalizado y el tipo de controlador de eventos es un delegado público ... no hay nada es funcionalmente incorrecto ... los eventos funcionan y disparan de la forma correcta, es un problema puramente de tiempo de diseño. –

+0

Aha, asegúrese de que la definición del controlador de eventos siempre se declare como pública, de lo contrario no será visible. –

+0

Como dije, es público ... –

0

Una solución que utiliza un delegado. Por ejemplo he usado para un ListView costumbre que manejar evento elemento añadido: Declarar su delegado:

public delegate void ItemAddedHandler(object sender, ItemEventArgs e) 

declarará el evento que utilizan el delegado:

[Browsable(true)] 
    public event ItemAddedHandler ItemAdded; 

Nota: ItemEventArgs es un EventArgs personalizados

Espero que pueda ayudarlo, funciona bien para mí

Cuestiones relacionadas