Получение кнопки расположения в массиве, нажав на нее - PullRequest
0 голосов
/ 13 мая 2018

У меня есть сетка из измененных кнопок, названная в коде как GridEl.Каждый GridEl находится внутри массива с именем Grid[,], я хочу получить местоположение GridEl в массиве, нажав на него, как я могу это сделать?

Например, он должен записать вконсоль строка и столбец, и вот как это должно выглядеть в консоли: «Row: 2; Column: 5».Конечно, каждая кнопка должна написать свое собственное местоположение. *

void CreateGrid()
{
            GridEl[,] Grid = new GridEl[4, 6];
            int c, r, gcount; // c = Column, r = Row, gcount = GridEls count
            c = 0; r = 0; gcount = 0;

            while ((c < 7)&&(r < 5) && (gcount != 24)) //Loop that creates grid
            {
                if ((c == 6) && (r < 4))
                {
                    r++;
                    c = 0;
                }
                Grid[r, c] = new GridEl();
                Grid[r, c].Size = new System.Drawing.Size(64, 64);
                Grid[r, c].Location = new System.Drawing.Point(21 * 3 * c, 21 * 3 * r);
                MainForm.Controls.Add(Grid[r,c]);
                c++;
                gcount++;
            }
        }


    public class GridEl : Button
    {
//here is the code of GridEl
    }

1 Ответ

0 голосов
/ 13 мая 2018

Используйте это для определения класса кнопки GridEl

    public class GridEl : Button
    {
        public int R { get; set; }
        public int C { get; set; }
    }

Добавьте это в ваш while цикл

    Grid[r, c].R = r;
    Grid[r, c].C = c;
    Grid[r, c].Click += OnClick;

и, наконец, ваш Click обработчик событий для кнопки

    private void OnClick(object sender, EventArgs eventArgs)
    {
        GridEl thisButton = sender as GridEl;
        Console.WriteLine($"Row: {thisButton.R}; Column: {thisButton.C}");
    }

То, что вы здесь делаете, - это просто устанавливаете значения Row и Column на самой кнопке сетки, чтобы она всегда знала, что это значение, и была доступна, когда это необходимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...