2013-09-19 2 views
-1

У меня есть такой кусок кода:Form1_KeyDown вызова button1_Click

private void button1_Click(object sender, EventArgs e) { 
     // Do something... 
    } 

    private void Form1_KeyDown(object sender, KeyEventArgs e) { 
     if (e.KeyData == Keys.A) { 
      // Call button1_Click. 
     } 
    } 

Как мне удается вызвать Нажмите событие? Что следует написать вместо

  // Call button1_Click. 

Спасибо!

+1

Использовать методы вместо фальсификации событий. События не следует вызывать, а запускать. Поэтому извлеките соответствующий код в 'button1_Click' и добавьте его в новый метод со значимым именем. Затем вызовите этот метод из 'button1_Click' и из' Form1_KeyDown'. –

+0

Вы никогда не должны помещать функциональный код в событие. Сделайте способ повторного использования и вызовите его из обоих мест. – paqogomez

+0

button1_Click (отправитель, нулевой), вероятно, будет работать, если вы не используете «е» – Rob

ответ

2

Событие предназначено для срабатывающих не называется. Таким образом, вы можете инициировать событие в своем Form1_KeyDown событии, нажав кнопку. Я имею в виду

private void Form1_KeyDown(object sender, KeyEventArgs e) { 
      if (e.KeyData == Keys.A) { 
       button1.PerformClick(); 
      } 
    } 
0

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

private void Form1_KeyDown(object sender, KeyEventArgs e) { 
    if (e.KeyData == Keys.A) { 
     button1_Click(this, e); 
    } 
} 

Однако, это часто, лучше переместить логику в отдельный метод, и вызывать его из обоих местах. Рефакторируя логику в пределах button1_Click в свой собственный метод, вы даете понять, что вы вызываете эту логику из любого набора обработчиков событий.

Смежные вопросы