Не знаю как получить индекс из списка кнопок C# winForms
Пишу код программы для создания графов из теории графов.
При нажатии на сетку генерируется узел графа с соответствующим индексом. Справа генерируются кнопки. Я хочу, чтобы при нажатии на кнопку узлы связывались ребром. Например, при нажатии на кнопку на 1 строке и 2 колонке будет рисоваться ребро, соединяющее 1 и 2 окружности.

Код для генерации кнопок
List<Button> btnList = new List<Button>();
for (int z = 1; z <= count; z++)
{
for (int x = 1; x <= count; x++)
{
Button btn = new Button();
btn.Text = 0.ToString();
btn.Location = new Point(z*30, x*30);
btn.Size = new System.Drawing.Size(30, 30);
btn.BackColor = System.Drawing.Color.White;
btn.MouseClick += new System.Windows.Forms.MouseEventHandler(btnClick);
panel1.Controls.Add(btn);
btnList.Add(btn);
}
}
Код события, описывающего нажатия кнопку
public void btnClick(object sender, EventArgs e)
{
Button button = (Button)sender;
button.Text = (int.Parse(button.Text)+1).ToString();
Graphics g = Graphics.FromImage(bmp);
Pen pen = new Pen(Color.Black);
//g.DrawLine(pen, );
//g.DrawLine(pen, );
pictureBox1.Image = bmp;
}
Может быть вопрос очень глупый, но я не понимаю на обратиться в функции btnClick к индексам нажатой кнопки.
Ответы (1 шт):
Для передачи каких-то параметров в событие можешь использовать:
button.Click += (sender, e) => ButtonClickEvent(sender, e, ...);
public void ButtonClickEvent(object sender, EventArgs e, ...)
{
}
Либо, ты можешь какую-то информацию запихнуть в Tag кнопки и брать её оттуда.
Пример:
Нам нужно создать программно кнопки, которые выводили на экран "своё" сообщение. Мы делаем следующее:
for (int x = 1; x <= 10; x++)
{
Button btn = new Button();
btn.Click += (sender, e) => ButtonClickEvent(sender, e, i);
}
public void ButtonClickEvent(object sender, EventArgs e, int i) =>
MessageBox.Show(i.ToString());