Сетка 10х10 из 100 кнопок: скрытие кнопки при нажатии (C #) - PullRequest
0 голосов
/ 05 марта 2011

У меня есть 10x10 сетка из 100 кнопок, я хочу скрыть кнопку, когда она нажата.

Есть ли способ применить это ко всем кнопкам ?? т.е. когда нажата любая из кнопок, эта кнопка скрыта. Я использую макет таблицы, чтобы расположить 100 кнопок в C #.

также я добавляю его в макет таблицы, поэтому, пожалуйста, скажите мне, как добавить эти кнопки в эту сетку таблицы 10x10. сам при нажатии)

Ответы [ 2 ]

9 голосов
/ 05 марта 2011

Создайте 100 кнопок

foreach (int i in Enumerable.Range(0, 10))
{
    foreach (int j in Enumerable.Range(0, 10))
    {
        Button b = new Button();
        b.Size = new System.Drawing.Size(20, 20);
        b.Location = new Point(i * 20, j * 20);
        b.Click += new EventHandler(anyButton_Click); // <-- all wired to the same handler
        this.Controls.Add(b);
    }
}

и подключите их все к одному и тому же обработчику событий

void anyButton_Click(object sender, EventArgs e)
{
    var button = (sender as Button);
    if (button != null)
    {
        button.Visible = false;
    }
}

в обработчике событий, который вы разыграли от sender до Button, и это являетсякнопка, которая была нажата.

0 голосов
/ 05 марта 2011

Поскольку вы используете tablelayoutpanel, вам не нужно рассчитывать позиции для кнопок, контроль делает это за вас. Вы также можете установить свойство док-кнопки кнопок для заполнения, поэтому вам не нужно устанавливать размер кнопок. Все, что вам нужно сделать, это настроить свойства tableLayoutPanle

Так ..

Button b;
foreach (int i in Enumerable.Range(0, 100))
{

        b = new Button();
        //b.Size = new System.Drawing.Size(20, 20); 
        b.Dock = DockStyle.Fill
        b.Click += new EventHandler(anyButton_Click); // <-- all wired to the same handler
        tableLayoutPanel.Controls.Add(b);

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