我在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'“
我该怎么办?
答案 0 :(得分:1)
似乎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();
}
}
'label7_Click'没有超载匹配委托
public void label7_Click(object sender, FormClosingEventArgs e)//this method de is incorrect
答案 1 :(得分:1)
FormClosingEventArgs
的活动仅适用于Form.FormClosing
活动。将您的代码更改为:
public void label7_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Are you sure you want to exit?", "Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
this.Close(); //this closes the form
}
}
答案 2 :(得分:1)
您正尝试将FormClosing事件的事件处理程序设置为标签的click事件 这两个事件具有不同的签名,因此不兼容。
label_click(object sender, EventArgs e)
MyForm_FormClosing(object sender, FormClosingEventArgs e)
如果您打算在用户点击标签时关闭应用程序,那么您需要将事件处理程序更改为
label_click(object sender, EventArgs e)
{
if (MessageBox.Show("Are you sure you want to exit?", "Confirmation",
MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
this.Close();
}
}
如果您的目的是在用户尝试退出应用程序时要求确认,那么您需要向表单添加FormClosing事件处理程序然后编写
MyForm_FormClosing(object sender, FormClosingEventArgs e)
{
// NOTE, you don't want to abort closing when Windows shutdown, right?
if(e.CloseReason == CloseReason.UserClosing)
{
if (MessageBox.Show("Are you sure you want to exit?", "Confirmation",
MessageBoxButtons.YesNo, MessageBoxIcon.Question) ==
DialogResult.No)
{
e.Cancel = true;
}
}
}