2016-05-02 3 views
0

Я настоящий новичок на C# и все. Но я пытался сделать свою первую программу, когда у меня возникла эта проблема. Я сделал «private void closeButton_Click (отправитель объекта, EventArgs e)». «Когда вы нажимаете кнопку« закрыть », на экране появится подтверждающее сообщение.C# - повторное действие из частной пустоты

Но я хочу, чтобы один из элементов в полосе меню с именем «Выход» делал то же самое, что и на «private void closeButton_Click».

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

Вот код

private void closeButton_Click(object sender, EventArgs e) 
     { 
      DialogResult dialog = MessageBox.Show("Do you really want to exit?", "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question); 
      if (dialog == DialogResult.Yes) 
      { 
       Application.Exit(); 
      } 
      else if (dialog == DialogResult.No) 
      { 
       //Close 'dialog' 
      } 
     } 


private void exitToolStripMenuItem_Click(object sender, EventArgs e) 
     { 
      closeButton_Click = true; 
     } 
+0

Что случилось с 'closeButton_Click (NULL, NULL);' в 'exitToolStripMenuItem_Click' события? –

ответ

2

Вы используете closeButton_Click в качестве логической переменной (установив его так), но это метод.

Вы можете просто вызвать метод.

private void exitToolStripMenuItem_Click(object sender, EventArgs e) { 
    closeButton_Click(sender, e); 
} 
+0

Это сработало! Большое спасибо! –

+0

Хотя это может технически работать. Это избыточно и не очень чисто. Вы должны указывать событие щелчка обеих кнопок на один и тот же обработчик (см. Мой ответ для подробностей). – Colin

+0

@ Коллин Это, наверное, так и я бы сделал. Это было просто легче объяснить, так как он является самонадеянным новичком. :) Любая разница в производительности одного дополнительного метода в стеке, безусловно, не заметна. –

2

Как это делается, .NET передается делегатам обработчика событий. В случае с разными кнопками, вероятно, это событие «Click». Установка выглядит следующим образом:

protected void CloseHandler(object sender, EventArgs e){ /*code goes here*/ } 

//two buttons, referencing the same handler. 
firstButton.Click += CloseHandler; 
secondButton.Click += CloseHandler; 
Смежные вопросы