Non è necessario scrivere un Evento Click separato per ogni Item o SubItem.
Puoi 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".
Ti posto un mio codice ( VB 2008 - a te la traduzione in C# ) molto semplice :
1. Il Metodo ricorsivo :
Codice:
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 :
Codice:
Private Sub MioMenuItemClick(ByVal sender As System.Object, ByVal e As System.EventArgs)
MsgBox(DirectCast(sender, ToolStripMenuItem).Text)
End Sub
Da modificare a piacere.
3. Codice di aggiunta Handlers, tipicamente su Form Load :
Codice:
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.