Visualizzazione in fase di progettazione per eventi di controllo utente
-
02-07-2019 - |
Domanda
Ho creato un controllo WinForms che eredita da System.Windows.Forms.UserControl ... Ho alcuni eventi personalizzati sul controllo che vorrei che il consumatore del mio controllo potesse vedere. Non riesco effettivamente a visualizzare i miei eventi nella scheda Eventi della finestra Proprietà durante la fase di progettazione. Questo significa che l'unico modo per assegnare gli eventi è scrivere programmaticamente
myUserControl.MyCustomEvent += new MyUserControl.MyCustomEventHandler(EventHandlerFunction);
immagino che per me vada bene, ma quando qualcun altro verrà a utilizzare il mio UserControl non saprà che questi eventi esistono (a meno che non leggano il documento della biblioteca ... sì, giusto). So che l'evento verrà visualizzato utilizzando Intellisense ma sarebbe bello se potesse essere visualizzato anche nella finestra delle proprietà.
Soluzione
Assicurati che i tuoi eventi siano esposti come pubblici. Ad esempio ...
[Browsable(true)]
public event EventHandler MyCustomEvent;
Altri suggerimenti
Una soluzione che utilizza delegato. Ad esempio, ho usato un ListView personalizzato che gestisce l'evento con aggiunta di elementi: Dichiara il tuo delegato:
public delegate void ItemAddedHandler(object sender, ItemEventArgs e)
quindi dichiarare l'evento che utilizza il delegato:
[Browsable(true)]
public event ItemAddedHandler ItemAdded;
Nota: ItemEventArgs è un EventArgs personalizzato
La speranza può aiutarti, funziona bene per me