Определение индексов компонента, вызвавшего событие - C#

Узнай цену своей работы

Формулировка задачи:

Добрый вечер. Помогите, пожалуйста, решить проблему. Динамически создаю двумерный массив кнопок, по нажатию на которые выполняются определённые действия. Так вот, после нажатию на одну из таких мне нужно определить её индексы. Если бы массив был одномерным, это можно было реализовать следующим образом:
int k = Convert.ToInt16((sender as Button).Tag);
Но в этом случае я получаю только один индекс. Каким образом можно получить второй индекс кнопки? Заранее спасибо.

Решение задачи: «Определение индексов компонента, вызвавшего событие»

textual
Листинг программы
public partial class Form1 : Form
{
    Button[,] arr;
 
    public Form1()
    {
        InitializeComponent();
        arr = new Button[,] { { button1, button2, button3 }, { button4, button5, button6 }, { button7, button8, button9 } };
        for (int i = 0; i < arr.GetLength(0); i++)
            for (int j = 0; j < arr.GetLength(1); j++)
               {
                  arr[i,j].Tag = new Tuple<int, int>(i,j);
                  arr[i,j].Click += (s,e) => OnClick((Button)s, e);
               }
    }
 
    void OnClick(Button sender, EventArgs e)
    {
        Tuple<int,int> tuple = (Tuple<int,int>) sender.Tag;
        MessageBox.Show(string.Format("{0}:{1}", tuple.Item1, tuple.Item2));
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.2 из 5
Похожие ответы