JavascriptProva

mercoledì 12 febbraio 2014

Ancora sui menu...

Ora devo aggiungere alla Casella che ho messo nel contenitore un nuovo menu.
Intanto, se clicco su questa, si attiva il menu che viene in qualche modo "ereditato" dal controllo contenitore, e questo mi sballa tutta la logica...

Ci metto alcuni comandi "test"...
    Sub aggiungi(sender As Object, e As EventArgs)
        Debug.Print(mioMenu.SourceControl.GetType.ToString)
        Dim c As New Casella
        c.ContextMenuStrip = mioMenu
        elementoSelezionato.controls.add(c)
    End Sub
Ecco: ho aggiunto questa riga:
Debug.Print(mioMenu.SourceControl.GetType.ToString)
per desumere l'elemento che ha "innescato" il menu contestuale.
Poi ho impostato l'innesco del menu contestuale anche da parte della casella, per vedere se il sourceElement, ossia l'elemento che ha innescato il menu, sia sempre lo stesso.
        Dim c As New Casella
        c.ContextMenuStrip = mioMenu
        elementoSelezionato.controls.add(c)
Se evito di inserire la riga:
c.ContextMenuStrip = mioMenu
che attribuisce il menu contestuale alla casella, ottengo come sourceControl:
gridProject.Pannello
gridProject.Pannello
avendo cliccato la prima volta sul Pannello per aggiungere la Casella, e la seconda volta sulla Casella:

Invece se metto la riga che attribuisce alla Casella il menu contestuale:
    Sub aggiungi(sender As Object, e As EventArgs)
        Debug.Print(mioMenu.SourceControl.GetType.ToString)
        Dim c As New Casella
        c.ContextMenuStrip = mioMenu
        elementoSelezionato.controls.add(c)
    End Sub
Ottengo, sempre cliccando prima sul Pannello e poi sulla Casella:
gridProject.Pannello
gridProject.Casella
ottenendo quello che voglio, ossia che al click sul menu sia riconosciuto il controllo sul quale ho cliccato per aprire il menu contestuale.

Nessun commento:

Posta un commento