Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
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
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:
Codice sorgente - presumibilmente Plain Text
Msg.Text = DirectCast(sender, Control).Tag
Control è generico e indipendente dal tipo di controllo: se si tratta di un pulsante, puoi anche specificare Button.