Использование события от кнопки 1 в кнопке 2 - PullRequest
1 голос
/ 03 ноября 2011

У меня 2 кнопки.Я пытаюсь использовать событие от кнопки 1 до кнопки 2, чтобы они оба делали одно и то же.
Таким образом, нажав 2, кнопка 1 также будет нажата.Я делаю это на самом деле из пункта меню, но я полагаю, что это тот же принцип.Я просто не хочу дублировать код.Я думал, что button1.Click () будет работать, но, видимо, это не так.Как я могу это сделать?

Упрощенный пример:

private void button1_Click(object sender, EventArgs e)
{
    count += 1;
    label1.Text = Convert.ToString(count);
}
private void button2_Click(object sender, EventArgs e)
{
    count += 1;
    label1.Text = Convert.ToString(count);
}

- РЕДАКТИРОВАТЬ -

Я использую диаграмму классов, которая не 'не показывать какие-либо дополнительные методы, которые бы / должны были это сделать.Нужно придерживаться диаграммы классов.

Ответы [ 3 ]

7 голосов
/ 03 ноября 2011

У вас есть несколько вариантов.

  1. Поместите код в обоих событиях в его собственный метод и вызовите его.
  2. Создайте один метод _click и установите его в качестве обработчика событий для обеих кнопок.
  3. Вы можете позвонить button2_Click из button1_click (я советую против этого) .

1

private IncrementAndDisplay()
{
    count += 1;
    label1.Text = Convert.ToString(count);
}
private void button1_Click(object sender, EventArgs e)
{
    IncrementAndDisplay();
}
private void button2_Click(object sender, EventArgs e)
{
    IncrementAndDisplay();
}

2

// Change both button's clicked events to use this method in the IDE, or in code.
private void button_Click(object sender, EventArgs e)
{
    count += 1;
    label1.Text = Convert.ToString(count);
}

3

private void button1_Click(object sender, EventArgs e)
{
    button2_Click(sender, e); // Bad!
}
private void button2_Click(object sender, EventArgs e)
{
    count += 1;
    label1.Text = Convert.ToString(count);
}
2 голосов
/ 03 ноября 2011

Независимо от того, что кнопка1 помещает в отдельный метод и вызывает этот метод из обеих кнопок, лучше отделить код, и тогда вы ничего не дублируете.

То, что вы предложили, создает неестественную зависимость междукнопки, которые не должны существовать.

О вашей диаграмме классов, если это частный метод, это не должно иметь значения.

1 голос
/ 03 ноября 2011

Вы должны использовать отдельную функцию / метод для обработки действия, а затем оба обработчика кнопок вызывают эту функцию:

private void button1_Click(object sender, EventArgs e)
{
    doTheThing();
}
private void button2_Click(object sender, EventArgs e)
{
   doTheThing();
}

private void doTheThing()
{
    count += 1;
    label1.Text = Convert.ToString(count);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...