1

Form.cs にこの終了フォーム コードがあります。

 public void label7_Click(object sender, FormClosingEventArgs e)
    {
        MessageBox.Show("Are you sure you want to exit?", "Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
        if (MessageBox.Show("Are you sure you want to exit?", "Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
        {
            e.Cancel = true;
        }
        else { 
            Application.Exit(); 
        }
    }

そして、私の Form.designer.cs のこのコード

 this.label7.Click += new System.EventHandler(this.label7_Click);

ただし、「「label7_Click」のオーバーロードがデリゲート「System.EventHandler」と一致しません」というエラーが表示され続けます

私は何をすべきか?

4

2 に答える 2

0

あなたのコードは少し混乱しています。ユーザーはアプリケーションを終了したいときに label7 をクリックしますか? サブスクライブしている Click イベントは、発生時に FormClosingEventArgs を提供しません。Click は EventHandler イベントです。つまり、発生したときに EventArgs オブジェクトを提供します。EventArgs クラスには Cancel プロパティはありません。

ユーザーが label7 をクリックしたときに MessageBox を表示したいようです。MessageBox はユーザーに「終了してもよろしいですか?」と尋ね、ユーザーが「はい」をクリックすると、アプリケーションは終了します。その場合は、次を試してください。

private void label7_Click(object sender, EventArgs e)
{
    var result = MessageBox.Show("Are you sure you want to exit?", "Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
    if (result == DialogResult.Yes)
    {
       Application.Exit();
    }
}

label7.Click += label7_Click;
于 2013-04-11T15:44:19.137 に答える
0

label7_Clickメソッドが存在しないようです

  this.label7.Click += new System.EventHandler(this.label7_Click);

    void label7_Click(object sender, EventArgs e)
    {

    if (MessageBox.Show("Are you sure you want to exit?", "Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
    {
        //
    }
    else { 
        Application.Exit(); 
    }
    }

No overload for 'label7_Click' matches delegate

public void label7_Click(object sender, FormClosingEventArgs e)//this method de is incorrect
于 2013-04-11T15:13:10.733 に答える