Oppure

Loading
Questo topic e' stato chiuso dal moderatore.
09/10/09 15:33
Alfonso
Ho una label1 con il tag=1
Quando clicco sulla label con Option Strict Off non da errore e mi restituisce il tag, con Option Strict On si presenta l'errore.


Public Sub ClickHandler(ByVal sender As Object, ByVal e As System.EventArgs)

Msg.Text = sender.tag

End Sub

sender.tag errore: Option Strict On non consente l'associazione tardiva

Come faccio a dare un'associazione non tardiva?
aaa
09/10/09 16:25
BugliL
Esegui un Cast
La proprietà TAG è di tipo oggetto, con strinct on non fa la conversione in testo :)
Msg.Text = cstr(sender.tag)
aaa
09/10/09 17:06
Alfonso
Non so cosa sia fare un cast
Se fare un cast significa il cstr(sender.tag) non è cambiato nulla

Continua a darmi errore.
aaa
09/10/09 17:45
Il Totem
L'associazione tardiva è il nome stupido in italiano del Late Binding. In questo caso richiami la proprietà Tag da un oggetto di tipo Object. Ovviamente il compilatore non produce un errore, come avrai notato; tuttavia, saprai anche che la classe System.Object non espone la proprietà Tag.
Il fatto che non segni errori deriva proprio dal late binding a cui è sottoposta la variabile di tipo Object: dato che ogni altra classe deriva da essa, è permesso richiamare proprietà di cui noi siamo sicuri dell'esistenza a runtime, sebbene non siano direttamente esposte dalla classe. Infatti, anche se sender è di tipo Object, contiene un valore di tipo Control, che possiede appunto la proprietà Tag.
Quello che ti suggerirei è l'esecuzione, comunque di un cast, ma di sender e non di tag:
Msg.Text = DirectCast(sender, Control).Tag

Control è generico e indipendente dal tipo di controllo: se si tratta di un pulsante, puoi anche specificare Button.
aaa
09/10/09 21:58
Alfonso
Molto chiaro. Tutto a posto.
Grazie Il Totem
aaa