Определение индексов компонента, вызвавшего событие - 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));
    }
}

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

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

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