MenuItem Click_event dodawane dynamicznie

0

Witam,

Mam problem z dynamicznym dodaniem zdarzenia na kliknięcie itema w rozwijanej liście toolstripdropdownbutton. Mój kod wygląda następująco:

        private void trasy_button_Click(object sender, EventArgs e)
        {

            int LiczbaPoracownikow = Obiekty_Static.LiczbaPracownikow;

            trasy_button.DropDownItems.Clear();
            ToolStripMenuItem[] MenuPoziom1 = new ToolStripMenuItem[LiczbaPoracownikow ];
            ToolStripMenuItem[][] MenuPoziom2 = new ToolStripMenuItem[LiczbaPoracownikow][];
            for (int i = 0; i < LiczbaPoracownikow; i++)
            {
                MenuPoziom2[i] = new ToolStripMenuItem[Tablice.TablicaPracownicy[i].Length];
                MenuPoziom1[i] = new ToolStripMenuItem();
                MenuPoziom1[i].Text = "Pracownik nr " + (i+1).ToString();
                for (int z = 0; z < Tablice.TablicaPracownicy[i].Length; z++)
                {
                    MenuPoziom2[i][z] = new ToolStripMenuItem();
                    MenuPoziom2[i][z].Text = "Zlecenie nr " + Tablice.TablicaPracownicy[i][z].NrZlecen.ToString();
                    MenuPoziom2[i][z].Click += new EventHandler(MenuItemClicked_Click);  // TU POJAWIA SIE BŁĄD
                    MenuPoziom1[i].DropDown.Items.Add(MenuPoziom2[i][z].Text);
              
                }
                trasy_button.DropDownItems.Add(MenuPoziom1[i]);     
            }
        }
 private void MenuItemClicked_Click(object sender, ToolStripItemEventHandler e)
               {
                int nrpracownika = Convert.ToInt16(e.ClickedItem.Text.Substring(12));
                ToolStripMenuItem clickedItem = (ToolStripMenuItem)sender;

                string ala = clickedItem.Text;
		(...)
               }

Nie wiem jak naprawić ten błąd : "No overload for 'MenuItemClicked_Click' matches delegate 'System.EventHandler'".

Po kliknięciu toolstripdropdownbutton pojawia się lista itemów, które rozwijane są na kolejne listy. np.:

button->
menuItem1->
menuItem11
menuItem12
menuItem2->
menuItem21
menuItem22

Chciałbym aby po kliknięciu itemu z poziomu 2-giego np menuItem11 wywołane zostało zdarzenie. W tym zdarzeniu potrzebuje odczytać nazwy tego itema itp.

Czy mógłby ktoś pomóc jak to uczynić. Nie pisałem, ale widoczne z kodu, że listy wypełniane są dynamicznie.
Pozdrawiam
Kudłacz

0

A skąd Ci się to wzięło? o_O

Kudłacz napisał(a)
 private void MenuItemClicked_Click(object sender, ToolStripItemEventHandler e)

W komunikacie błędu jest mowa o System.EventHandler: http://msdn.microsoft.com/en-us/library/system.eventhandler(v=VS.100).aspx

0
Sarrus napisał(a)

A skąd Ci się to wzięło? o_O

Kudłacz napisał(a)
 private void MenuItemClicked_Click(object sender, ToolStripItemEventHandler e)

W komunikacie błędu jest mowa o System.EventHandler: http://msdn.microsoft.com/en-us/library/system.eventhandler(v=VS.100).aspx

No ok. Chciałem trochę może przedobrzyć... Dlaczego zatem poniższy kod nie wyrzuca błędu, ale nie działa również ...?

        private void TestKlikaniaWmenu(object sender, EventArgs e)
        {
            ToolStripMenuItem kliknietapozyzja = (ToolStripMenuItem)sender;
            MessageBox.Show(kliknietapozyzja.Text.ToString());
            
        }

        private void toolStripDropDownButton2_Click(object sender, EventArgs e)
        {
            int LiczbaPoracownikow = 4;

            toolStripDropDownButton2.DropDownItems.Clear();
            
            ToolStripMenuItem[] MenuPoziom1 = new ToolStripMenuItem[LiczbaPoracownikow];
            ToolStripMenuItem[][] MenuPoziom2 = new ToolStripMenuItem[LiczbaPoracownikow][];
            
            for (int i = 0; i < LiczbaPoracownikow; i++)
            {
              
                MenuPoziom1[i] = new ToolStripMenuItem();
                MenuPoziom1[i].Text = "Pracownik nr " + (i + 1).ToString();
                MenuPoziom2[i] = new ToolStripMenuItem[5];
                toolStripDropDownButton2.DropDown.Items.Add(MenuPoziom1[i]);

                for (int z = 0; z < 5/* Tablice.TablicaPracownicy[i].Length*/; z++)
                {
                    MenuPoziom2[i][z] = new  ToolStripMenuItem();
                    MenuPoziom2[i][z].Text = "Zlecenie nr " + z.ToString();
                    MenuPoziom1[i].DropDown.Items.Add(MenuPoziom2[i][z].Text);
                    MenuPoziom2[i][z].Click += new EventHandler(TestKlikaniaWmenu); 
                    

                }
                
            }
        }
0

Dla uściślenia...

Menu buttona wypełnia się prawodłowo, ale po kliknięciu elementu menu z poziomu drugiego nic sie nie dzieje. Zdarzenie Click nie działa?

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