Eventos en UserControl
-
21-08-2019 - |
Pregunta
Soy nuevo en UserControls, y al mismo tiempo el desarrollo de mi propio control me encontré con un problema mostrando eventos de mi control en la cuadrícula de propiedades en tiempo de diseño. Si tengo algunos eventos en mi control quiero verlos en cuadrícula de la propiedad y si hago doble clic que yo quiero tener un manejador, de la misma forma en que Microsoft hace por sus controles.
Solución
Deben aparecer automáticamente si no me equivoco. Asegúrese de que se ha construido su proyecto sin embargo, o cambios no se propagará a abrir los diseñadores. Y asegurarse de que es un evento public
también. (Eventos / protegidas por derecho no deberían aparecer porque no son accesibles.)
Una cosa que puede hacer para hacer más agradable la experiencia de diseño de su usuario es hacer algo como lo siguiente:
[Description("This event is raised when the user presses the enter key while the control has focus."),
Category("Key")]
public event EventHandler EnterPressed;
La "Descripción" poco pone un mensaje en el panel de descripción de la ventana de propiedades. La "categoría" poco pone en una categoría determinada (el valor predeterminado es Misc. Al final).
Por cierto, usted no ha especificado un idioma o el medio ambiente, por lo que lo anterior puede ser necesario modificar si no es C # en Visual Studio 2005 +.
Otros consejos
Yo suelo usar este patrón, para crear un evento personalizado en UserControls:
#region MyEvent CUSTOM EVENT
protected virtual void OnMyEvent(MyEventEventArgs e)
{
if (MyEvent != null)
MyEvent(this, e);
}
public delegate void MyEventHandler(object sender, MyEventEventArgs e);
public event MyEventHandler MyEvent;
public class MyEventEventArgs : EventArgs
{
}
#endregion MyEvent CUSTOM EVENT
Esto tiene la misma convención de nombres de eventos de Microsoft, se puede disparar OnMyEvent desde el interior de su control, tienen EventArgs personalizados, manejar MyEvent de otros controles.
Debe ser el uso Delegado en el control de usuario y elevarlo a la página principal (página aspx) .Si esta manera no funcionó, se debe tener cuidado al UserControlID.It registro tiene por qué difiere con otros UserControl.Each control de usuario necesita una identificación.