Newsgroup: it.comp.lang.visual-basic
Titolo: [.NET] sender.GetType

Ciao a tutti,
come da subject sender.GetType fa riferimento all'oggetto che ha scatenato
l'evento.
Siccome, nel mio caso, l'oggetto su cui l'utente clicca è un MenuItem
facente parte di un array creato a runtime, vorrei capire quale item è stato
scelto.
Non riesco a trovere tra i membri di GetType qualcosa che identifichi in
maniera univoca il mio item, come si fa?
Il codice che ho usato è tutto nel mio post di ieri delle 19.17
Grazie!
Ciao, Luca.

Escludendo l'uso di Text (poco elegante) ti suggerirei di create un tuo
MenuItem che eredita da MenuItem e lo estende con una proprietą ID che
imposti durante la creazione e che ti puo essere utile per identificarlo a
runtime.
In pratica:
Public Class MenuItemEx : Inherits MenuItem
   Private Ident As String
   Public Sub New(ByVal id As String)
      MyBase.New()
      Me.Ident = id
   End Sub
   ReadOnly Property Id() As String
      Get
         Return Me.Ident
      End Get
   End Property
End Class
HTH
-- 
Corrado Cavalli [Microsoft MVP]
UGIdotNET - 
http://www.ugidotnet.org

Forse dovrebbe funzionare come segue:
 Protected Sub DynMenuItem_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs)
        Dim a As System.Windows.Forms.MenuItem = DirectCast(sender,
System.Windows.Forms.MenuItem)
        MessageBox.Show(a.Text)
    End Sub
giuseppeD

 ha scritto nel messaggio
news:GjiP9.57679$Ou4.1...@twister2.libero.it...
: Escludendo l'uso di Text (poco elegante) ti suggerirei di create un tuo
: MenuItem che eredita da MenuItem e lo estende con una proprietà ID che
: imposti durante la creazione e che ti puo essere utile per identificarlo a
: runtime.
OK, ho creato la mia classe menuItem personalizzata, solo che nella routine
evento non riesco comunque ad accedere alla proprietà ID dell'item...
Protected Sub DynMenuItem_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs)
'''''fa qualcosa a seconda dell'Item su cui è stato fatto click
End Sub
Per disperazione sto seguendo un'altra strada :
1) ho scritto una classe MenuEventArgs derivata da System.EventArgs
2) ho dichiarato un nuovo EventHandler
Dim MyEvHand As MenuEventHandler = AddressOf DynMenu_Click
3) ho delegato il MenuEventHandler
Public Delegate Sub MenuEventHandler(ByVal sender As Object, _
ByVal e As MenuEventArgs)
Compilando il tutto mi da errore qui quando aggiungo l'item
cmMenu.MenuItems.Add(txt, MyEvHand)
                                              xxxxxxxxx
dicendo che non è in grado di convertire MyEvHandler in System.EventHandler
sicuramente ho dimenticato qualcosa ma non so proprio cosa!!!
Grazie, Corrado, per la disponibilità.
Ciao, Luca.

 ha scritto nel messaggio
news:9CiP9.31593$Q%4.98...@news1.tin.it...
:
: Forse dovrebbe funzionare come segue:

:
:
:

devi castare l'oggetto a MenuItemEx ovvero:
Dim ItemEx as MenuItemEx=DirectCast(sender,MenuItemEx)


Perdonate l'intrusione, ma sinceramente mi sembra
impossibile che un MenuItem non abbia una proprietą NAME
che si puņ assegnare a runtime e verificare in sede di esecuzione.
Sbaglio?
Andrea

che si può assegnare a runtime e verificare in sede di esecuzione.
Sembra incredibile, ma curiosando nell'help non ho effettivamente
trovato traccia della proprieta' Name, poiche' MenuItem
non eredita da Control.
Il suggerimento di Corrado mi sembra interessante in quanto 
non risente da eventuale fattori di configurazione e/o 
localizzazione dell'applicazione.
-- 
ciao, hal

In modo nativo no, ma grazie all'ereditarietą puoi aggiungere qualsiasi
properietą ti puņ far comodo
