|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
[.Net / Winforms]Oggetto MenuStrip
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: Codice:
foreach(ToolStripMenuItem item in menuStrip.Items)
{
MessageBox.Show(item.Name);
}
Grazie
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
|
|
|
|
|
|
#2 |
|
Senior Member
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
Codice:
Private Sub MioMenuItemClick(ByVal sender As System.Object, ByVal e As System.EventArgs)
MsgBox(DirectCast(sender, ToolStripMenuItem).Text)
End Sub
3. Codice di aggiunta Handlers, tipicamente su Form Load : Codice:
For Each tsmi As ToolStripMenuItem In MenuStrip1.Items
CreaHandlersMenu(tsmi)
Next
__________________
Contattami su FaceBook --> [ ::: MarcoGG su FaceBook ::: ] Visita il mio Blog --> [ ::: Il Blog di MarcoGG ::: ] |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
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
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:00.



















