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à.

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top