Generare eventi con la libreria di controlli

mercoledì 07 maggio 2008 - 12.12

willy_80 Profilo | Senior Member

Avevo il problema di comunicare con una libreria di controlli da me creata ma con l'aiuto di lanello ho risolto.

Ora ho un'altro piccolo nodo da sciogliere....

Ho questa libreria di controlli che contiene dei button, vorrei se possibile... che dopo aver inserito la detta libreria in un form potessi cliccando su un button della libreria generare un evento nel form contenitore è possibile?

aiedail92 Profilo | Expert

Ciao

Se il button contiene un evento (quale potrebbe essere ad esempio Click), ti basta aggiungere un handler all'evento per intercettarlo. Se il button l'hai aggiunto dal designer, cliccandoci sopra due volte viene generata automaticamente la procedura per la gestione dell'evento click. Puoi notare (se usi VB.net) che viene usata la parola chiave Handles per associare al metodo l'evento del controllo.

Se invece il controllo non l'hai aggiunto dal designer, puoi usare le parole chiave AddHandler e RemoveHandler per aggiungere o rimuovere gestori per gli eventi:

AddHandler tuoButton.Click, AddressOf tuoButton_Click RemoveHandler tuoButton.Click, AddressOf tuoButton_Click

Dove tuoButton_Click è il nome del metodo che deve gestire l'evento, e deve avere la stessa firma dell'evento

Luca

willy_80 Profilo | Senior Member

Mi spiego meglio:

La mia dll contiene 40 Button : Button1,Button2,...,Button40 inseriti col digner.
Ogni volta che clicco su uno dei Button salto alla routine test contenuta nel codice della dll.
All'interno della routine test vorrei inserire il codice adeguato per generare un evento in form1.

E' possibile?

Io ho risolto così ma non credo che sia corretto:

1) Nella dll ho una property chiamata Appoggio e la variabile publica Stato dichiarata boolean e ha valore false
2) Quando clicco su un button della dll nella routine test cambio il valore della variabile rendendola true
3) Nel Form1 ho inserito un timer che ciclicamente controlla lo stato della variabile stato nella proprietà Appoggio e se è true allora la rimetto a false e genero il codice voluto

aiedail92 Profilo | Expert

Scusa, avevo interpretato male...

Aggiungi nel codice della libreria un evento:

Public Event TuoEvento As EventHandler

EventHandler è il delegato che rappresenta la firma dell'evento.

Per generare l'evento quindi usi

RaiseEvent TuoEvento(argomenti)

Dove gli argomenti devono rispettare la firma dell'evento

Luca

willy_80 Profilo | Senior Member

Perdona la mia ignoranza ma mi potresti spiegare cosa inserire come argomenti?

aiedail92 Profilo | Expert

EventHandler è il gestore eventi predefinito, accetta come argomenti un object e un EventArgs.

L'argomento sender di tipo object determina il controllo che ha scatenato l'evento, e l'argomento e di tipo EventArgs gestisce informazioni aggiuntive sull'evento.

Per un evento del tipo Click va benissimo richiamarla con la classe come sender e EventArgs.Empty per specificare nessuna informazione aggiuntiva:

RaiseEvent TuoEvento(Me, EventArgs.Empty)

Luca

willy_80 Profilo | Senior Member

Grazie mille funziona tutto.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5