View Single Post
Old 07-12-2010, 11:14   #2
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
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.
__________________
Contattami su FaceBook --> [ ::: MarcoGG su FaceBook ::: ]
Visita il mio Blog --> [ ::: Il Blog di MarcoGG ::: ]
MarcoGG è offline   Rispondi citando il messaggio o parte di esso