[C#] Dynamische Buttons einzeln handeln

Blackhawk50000

Erfahrenes Mitglied
Zuerst mal die Erklährung.

Es ist eigentlich schnell gesagt, ich erzeige in einer (besser gesagt zwei) Schleifen einige Buttons mit Name und Position und Größe und auch einem Event.

Dieses Event ist natürlich dann nur einmal da und für jeden Button gleich. Wie mache ich es nun, dass ich für jeden Button einzeln anspreche

Zur zeit ist es so, das nur der zuletzt erstellte Button bearbeitet wird. Egal auf welchen ich klicke.

hiuer der Code

C#:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace MyMineSweeper
{
    public partial class Form1 : Form
    {
        #region Deklarationen
        private string[] _Reihe = new string[6] { "A", "B", "C", "D", "E", "F" };
        private int[] _Spalte = new int[6] { 1, 2, 3, 4, 5, 6 };
        private int _Groesse = 50;
        private string _PositionY = string.Empty;
        private string _PositionX = string.Empty;
        private string _currentButton;
        Button b_Feld;
        #endregion

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            ButtonsErzeugen();
        }

        private void ButtonsErzeugen()
        {
            for (int z = 0; z < 6; z++)
            {
                _PositionY = _Reihe[z];
                for (int s = 0; s < 6; s++)
                {
                    _PositionX = _Spalte[s].ToString(); ;
                    b_Feld = new Button();
                    b_Feld.Name = _PositionX + _PositionY;
                    b_Feld.Location = new Point(z * _Groesse, s * _Groesse);
                    b_Feld.Size = new Size(_Groesse, _Groesse);
                    b_Feld.Parent = this;
                    b_Feld.CreateControl();
                    b_Feld.MouseClick += new MouseEventHandler(b_Feld_MouseClick);
                }
            }
        }

        void b_Feld_MouseClick(object sender, MouseEventArgs e)
        {
            b_Feld.BackColor = Color.Black;
        }
    }
}
 
Hallo,

über die Variable "sender" beim Event wird dir das Button-Objekt geliefert, welches den Event ausgelöst hat:
C#:
((Button)sender).BackColor = Color.Black;
Die Variable b_Feld brauchst du nicht als Klassenmember deklarieren; lokal reicht.

Gruß
MCoder
 
Zurück