2016-05-02 22 views
0

我是一個真正的初學者在C#和一切。但是當我遇到這個問題時,我正在嘗試製作第一個程序。我已經做了「私人無效closeButton_Click(對象發件人,EventArgs e)」點擊自定義關閉按鈕時,它會顯示一個確認消息。C# - 從私人空間重複行動

但我想要一個名爲'退出'的菜單條上的項目,做與「私人無效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

'exitBitton_Click(null,null);'exitToolStripMenuItem_Click'事件中出現了什麼問題? –

回答

2

您使用closeButton_Click爲布爾變量(設置爲true),但它是一個方法。

您可以調用該方法。

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

它的工作!坦克很多! –

+0

雖然這可能在技術上起作用。這是多餘的,不是很乾淨。你應該把兩個按鈕的點擊事件指向同一個處理器(詳見我的答案)。 – Colin

+0

@Collin我可能會這樣做。由於他是一名自稱爲初學者,因此這很容易解釋。 :)在堆棧上有一個額外方法的任何性能差異肯定不明顯。 –

2

這樣做的方式它是.NET通過事件處理程序委託。在不同的按鈕的情況下,它可能是在他們的「點擊」事件。設置看起來像這樣:

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

//two buttons, referencing the same handler. 
firstButton.Click += CloseHandler; 
secondButton.Click += CloseHandler;