Descrizione :
Una tecnica per gestire gli Handlers di menu particolarmente complessi.
+ Articolo :
Non è necessario scrivere un Evento Click separato per ogni Item o SubItem di un MenuStrip.
Nel caso in cui si abbiano menu con molte diramazioni e/o menu dinamici, può essere utile gestirne gli Handlers via codice.
Si può gestire l'evento Click solo su tutti gli Items e SubItems del menu che NON hanno ulteriori diramazioni, ma che costituiscono le voci di menu effettive ( che quindi corrispondono alle azioni vere e proprie dell'applicazione ).
Tutto può essere fatto in modo centralizzato, con un Metodo ricorsivo che aggiunge gli Handlers solo alle voci di menu "finali".
1. Il Metodo ricorsivo :
Private Sub CreaHandlersMenu(ByVal tsmi As ToolStripMenuItem) If tsmi.HasDropDownItems Then For Each ddi As ToolStripDropDownItem In tsmi.DropDownItems If ddi.HasDropDownItems Then CreaHandlersMenu(ddi) Else AddHandler ddi.Click, New EventHandler(AddressOf MioMenuItemClick) End If Next Else AddHandler tsmi.Click, New EventHandler(AddressOf MioMenuItemClick) End If End Sub
2. Il Metodo associato al Click :
Private Sub MioMenuItemClick(ByVal sender As System.Object, ByVal e As System.EventArgs) MessageBox.Show(DirectCast(sender, ToolStripMenuItem).Text) End Sub
Da modificare a piacere.
3. Codice di aggiunta Handlers, tipicamente su Form Load :
For Each tsmi As ToolStripMenuItem In MenuStrip1.Items CreaHandlersMenu(tsmi) Next
Quale che sia il numero e il livello dei menu e sottomenu nidificati, risolve.
+ Fine Articolo.
0 commenti:
Posta un commento