Click event w ContextMenuStrip przy wielu itemach

0

Mam wiele itemów w ContextMenuStrip. Napisałem jedno zdarzenie oznaczające kliknięcie jakiegoś iemu z menu i potem przy pomocy switch(kliknietyItem) ma być wykonana odpowiednia operacja. Kod dla każdej z opcji w menu to jedna linijka więc wolałem zrobić jedno zdarzenie ze switchem niż kilkadziesiąt zdarzeń po jednej linijce.

Interesuje mnie czy mając kilkadziesiąt ToolStripMenuItem'ów w ContextMenuStrip każdy item z osoba muszę podpinać do zdarzenia:

this.ToolStripMenuItem1.Click += new System.EventHandler(this.tsMenuItem_Click);
...
this.ToolStripMenuItem78.Click += new System.EventHandler(this.tsMenuItem_Click);

(To tylko przykład, nie wiem ile dokładnie mam itemów w menu, sporo, ale raczej nie 78 ;-P )

Czy mogę to zrobić jakoś prościej, ponieważ jeżeli podepnę jakieś zdarzenie tylko pod ContextMenuStrip.Click a nie pod każdy item z osobna, to zdarzenie to jest również wywoływane w momencie kliknięcia jakiegoś itemu. Nie umiem się jednak dobrać do informacji który to item, próbowałem przez sender ale tam jest info o ContextMenuStrip a nie o jego itemach, wiec nie wiem która opcja w menu ContextMenuStrip została kliknięta.

Czy jest możliwe uzyskać Text albo Tag klikniętego itemu z menu ContextMenuStrip ze zdarzenia ContextMenuStrip.Click? Czy dla każdego itemu z menu musze zdarzenie Click osobno podpinać?</quote>

0

Dla contextMenuStrip robisz zdarzenie ItemClicked :

        public Form1()
        {
            InitializeComponent();

            toolStripMenuItem1.Tag = "it_1";
            toolStripMenuItem2.Tag = "it_2";
            toolStripMenuItem3.Tag = "it_3";

            contextMenuStrip.ItemClicked += new ToolStripItemClickedEventHandler(contextMenuStrip_ItemClicked);
        }

        void contextMenuStrip_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            MessageBox.Show(e.ClickedItem.Tag.ToString());
        }
0
coorter napisał(a)

Dla contextMenuStrip robisz zdarzenie ItemClicked :

Dzięki, nie zauważyłem że contextMenyStrip ma też zdarzenie ItemClicked. Teraz jest ok.

1 użytkowników online, w tym zalogowanych: 0, gości: 1