'costruzione della griglia
mGrid = New Griglia(Of Pannello)(Me, True, 30, 5, 10, 10)
For Each elemento As Pannello In mGrid
AddHandler elemento.MouseDown, AddressOf AggiustaMenuPannello
elemento.ContextMenuStrip = mioMenu
Next
End Sub
Sub AggiustaMenuPannello()
aggiungiVociAlMenu(voci.aggiungi, voci.aggiungi)
End Sub
Sub aggiungiVociAlMenu(inizio As Integer, fine As Integer)
mioMenu.Items.Clear()
For n = inizio To fine
Dim m As New ToolStripMenuItem With {.Text = VociDelMenu(n)}
mioMenu.Items.Add(m)
Next
End Sub
Con il codice
For Each elemento As Pannello In mGrid AddHandler elemento.MouseDown, AddressOf AggiustaMenuPannello elemento.ContextMenuStrip = mioMenu NextSi attribuisce il gestore d'evento AggiustaMenuPannello al click su ciascuno dei pannelli della griglia, ossia si personalizza il menu mioMenu per il Pannello.
Nello stesso tempo si attribuisce come menu contestuale il menu mioMenu
L'aggiustamento del mioMenu per il pannello si vale delle due routines
Sub AggiustaMenuPannello() aggiungiVociAlMenu(voci.aggiungi, voci.aggiungi) End Sub Sub aggiungiVociAlMenu(inizio As Integer, fine As Integer) mioMenu.Items.Clear() For n = inizio To fine Dim m As New ToolStripMenuItem With {.Text = VociDelMenu(n)} mioMenu.Items.Add(m) Next End Sub...anche se forse si potrebbe fare prima con:
Sub AggiustaMenuPannello() mioMenu.Items.Clear() mioMenu.Items.Add(New ToolStripMenuItem With {.Text = VociDelMenu(0)}) End Sub...che funziona lo stesso e non è così cervellotico.
Quindi il codice, a questo punto diventa, semplificando ed evitando di intricarsi in jungle di pensiero contorto:
'costruzione della griglia mGrid = New Griglia(Of Pannello)(Me, True, 30, 5, 10, 10) For Each elemento As Pannello In mGrid AddHandler elemento.MouseDown, AddressOf AggiustaMenuPannello elemento.ContextMenuStrip = mioMenu Next End Sub Sub AggiustaMenuPannello() mioMenu.Items.Clear() mioMenu.Items.Add(New ToolStripMenuItem With {.Text = VociDelMenu(0)}) End Subladdove a ogni pannello della griglia viene semplicemente attribuita la funzione che formatta il menu su misura per il pannello e il menu stesso come menu contestuale.
Punto!
Nessun commento:
Posta un commento