Dynamisch generierte Buttons und Events?

multimolti

Erfahrenes Mitglied
Hallo!
In meinem Programm habe ich grade das Problem, dass ich keine Ahnung habe, wie ich rausfinden soll, welcher meiner dynamisch generierten Buttons gedrückt wurde.
Ich muss dem Button ja ein Click-Event hinzufügen, aber wie kann der Button dem Event sagen, welcher Button nun gedrückt wurde?
Die EventArgs und das sender-Objekt bringen da irgendwie nichts.
So erstelle ich meine Buttons:
Code:
                foreach (Planet planet in manager.Planets)
                {
                    ToolStripMenuItem planetstrip = new ToolStripMenuItem(planet.Name);

                    
                    planetstrip.Click += new EventHandler(planetstrip_Click);

                    planetstrip.Enabled = !planet.Active;

                    planetToolStripMenuItem.DropDownItems.Add(planetstrip);
                }
Und meine planetstrip_Click-Funktion soll jetzt irgendwie rausfinden, welcher Button gedrückt wurde, denn dieser Wert muss dann einer anderen Klasse übergeben werden. Wie kann ich sowas machen?
 
Du musst deinem ToolStripMenuItem einen Namen verpassen, und den dann im Click-Event abrufen.

Hier ein funktionierendes Beispiel:

Code:
        public Form1()
        {
            InitializeComponent();

            for (int i = 0; i < 10; i++)
            {
                ToolStripMenuItem item = new ToolStripMenuItem(i.ToString());

                item.Name = i.ToString();

                item.Click += new EventHandler(item_Click);

                testToolStripMenuItem.DropDownItems.Add(item);
            }
        }

        private void item_Click(object sender, EventArgs e)
        {
            label1.Text = sender.ToString();
        }

Das Label gibt den Namen des gedrückten Buttons aus, der Name ist das/der/die(?) int i.
Das heißt in diesem Beispiel: Erstes MenuItem = 0, zweites MenuItem = 1, und so weiter.



MfG FDX
 
Zurück