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 SubEcco: 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 = mioMenuche attribuisce il menu contestuale alla casella, ottengo come sourceControl:
gridProject.Pannello gridProject.Pannelloavendo 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.Casellaottenendo 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