View Full Version : [.Net / Winforms]Oggetto MenuStrip
RaouL_BennetH
06-12-2010, 12:53
Ciao a tutti :)
Ho un menustrip composto da diversi elementi.
Per ciasun item, volevo evitare di scrivere un evento "Click" ma volevo generalizzare il tutto.
Vi chiedo quindi:
Come faccio ad ottenere l'index o il nome o il tag dell'item attualmente cliccato ?
Banalmente avevo provato a fare così, giusto per test:
foreach(ToolStripMenuItem item in menuStrip.Items)
{
MessageBox.Show(item.Name);
}
ma mi restituisce il nome soltanto del primo item selezionato.
Grazie :)
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 :
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)
MsgBox(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. ;)
RaouL_BennetH
10-12-2010, 22:43
Grazie Marco e scusami se ti rispondo in ritardo ma sto conciato davvero male come tempi :(
Ad ogni modo, il tuo approccio funziona bene, soltanto che ho optato per lasciare il treeview da utilizzare come menu :)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.