Интеграция событий нажатия кнопки - PullRequest
0 голосов
/ 29 января 2020

В настоящее время я создаю поисковую платформу для материалов и хочу создать кнопку с таблицей periodi c. то, что я делаю сейчас, - это создание каждой кнопки для таблицы periodi c и создание событий каждого нажатия для каждой кнопки.

public void bc(string a)
{
    if (MainEntry.Text == "")
    {
        MainEntry.Text = a;
    }
    else
    {
        MainEntry.Text = MainEntry.Text + "," + a;
    }
}
private void buttonLi_Click(object sender, EventArgs e)
{
    bc("Li");
}
private void buttonBe_Click(object sender, EventArgs e)
{
    bc("Be");
}

Интересно, есть ли другой вариант для этого? например, если я нажимаю кнопку, система читает то, что написано на кнопке, и использует текст метода. Так что я могу уменьшить свои строки кода.

Ответы [ 3 ]

2 голосов
/ 29 января 2020

Да, вы можете просто вызвать один и тот же метод onclick для каждой кнопки и получить текст внутри события Onclick. Как то так:

private void button_Click(object sender, EventArgs e)
{
    Button button = sender as Button;

    bc(button.Text);
}
2 голосов
/ 29 января 2020

Вы можете использовать объект Sender, но сначала вам нужно подписать все нажатия кнопок на одно событие, примерно так:

public Form1()
{
    InitializeComponent();
    buttonLi.Click += button_Click;
    buttonBe.Click += button_Click;
}

private void button_Click(object sender, EventArgs e)
{
    Button btn = sender as Button;
    bc(btn.Text);
}

Отправитель содержит ссылку на элемент управления / объект, который поднял событие.

1 голос
/ 29 января 2020

Я бы использовал свойство Tag элемента управления.

Что-то вроде:

private void control_Click(object sender, EventArgs e)
{
    var control = (Control)sender;

    bc(control.Tag.ToString());
}

Таким образом, вам не нужно создавать обработчик событий для каждой кнопки. А использование тега предложит, что Text, отображаемое на кнопке, не обязательно должно быть равным.


Используйте (Control)sender над sender as Control, потому что если что-то не так, вы не сможете не хочу исключение "NullReferenceException", но реальное исключение, что пошло не так. (как недопустимые исключения приведения)


Выберите кнопку в форме

Form1 with button

Заполните тег верным значением

Tag property

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