2016-05-02 8 views
0

私はC#とすべての初心者です。しかし、私はこの問題が発生したときに私の最初のプログラムを作ろうとしていました。私は "個人的なクローズcloseButton_Click(オブジェクトの送信者、EventArgsのe)"を行っていると、カスタムクローズボタンをクリックすると、確認メッセージが表示されます。C# - 私的な空からのアクションを繰り返す

しかし、「Exit」という名前のメニューストリップのアイテムの1つが、その「private void closeButton_Click」と同じことをします。

これは短いコードなので、新しいメッセージボックスとすべてを書くことができますが、単純にコードを繰り返す方法になるはずです。

は、ここで(trueに設定)あなたはブール変数として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

'exitToolStripMenuItem_Click'イベントの' closeButton_Click(null、null);の何が問題なのですか? –

答えて

2

ですが、それは方法です。

メソッドを呼び出すことができます。

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

それは働いた!タンクがたくさん! –

+0

これは技術的には機能するかもしれませんが。冗長で、きれいではありません。両方のボタンのクリックイベントを同じハンドラに向ける必要があります(詳細は私の答えを見てください)。 – Colin

+0

@Collinそれはおそらく私もそれをやる方法だろう。彼は自信を持って初心者だったので、これは説明が簡単でした。 :)スタック上に1つの余分なメソッドを持つパフォーマンスの違いは、目立つことはありません。 –

2

これは.NETがイベントハンドラの代理を介して行う方法です。異なるボタンの場合は、おそらく "クリック"イベントにあります。設定は次のようになります:

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

//two buttons, referencing the same handler. 
firstButton.Click += CloseHandler; 
secondButton.Click += CloseHandler; 
関連する問題