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 回答