Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicitÓ e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - errore con Option Strict On
Forum - C# / VB.NET - errore con Option Strict On

Avatar
Alfonso (Ex-Member)
Guru


Messaggi: 688
Iscritto: 30/09/2009

Segnala al moderatore
Postato alle 17:33
Venerdý, 09/10/2009
Questo topic Ŕ stato chiuso dal moderatore

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?


che le risposte ti siano servite o meno un tuo riscontro Ŕ segno di cortesia.

http://www.alfonsonatale.altervista.org/
PM
Avatar
BugliL (Member)
Pro


Messaggi: 135
Iscritto: 09/08/2009

Segnala al moderatore
Postato alle 18:25
Venerdý, 09/10/2009
Esegui un Cast
La proprietÓ TAG Ŕ di tipo oggetto, con strinct on non fa la conversione in testo :)
Codice sorgente - presumibilmente Plain Text

  1. Msg.Text = cstr(sender.tag)



Fatti non foste a viver come bruti ma per servire virtude e canoscenza... (Dante Alighieri)
PM
Avatar
Alfonso (Ex-Member)
Guru


Messaggi: 688
Iscritto: 30/09/2009

Segnala al moderatore
Postato alle 19:06
Venerdý, 09/10/2009
Non so cosa sia fare un cast
Se fare un cast significa il cstr(sender.tag) non Ŕ cambiato nulla

Continua a darmi errore.


che le risposte ti siano servite o meno un tuo riscontro Ŕ segno di cortesia.

http://www.alfonsonatale.altervista.org/
PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 19:45
Venerdý, 09/10/2009
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

  1. Msg.Text = DirectCast(sender, Control).Tag


Control Ŕ generico e indipendente dal tipo di controllo: se si tratta di un pulsante, puoi anche specificare Button.


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupiditÓ."
(Fligende Blatter)

"Dubitare di se stessi Ŕ il primo segno d'intelligenza."
(Ugo Ojetti)
PM
Avatar
Alfonso (Ex-Member)
Guru


Messaggi: 688
Iscritto: 30/09/2009

Segnala al moderatore
Postato alle 23:58
Venerdý, 09/10/2009
Molto chiaro. Tutto a posto.
Grazie Il Totem


che le risposte ti siano servite o meno un tuo riscontro Ŕ segno di cortesia.

http://www.alfonsonatale.altervista.org/
PM