2013-04-11 90 views
1

我在Form.cs事件处理程序与FormClosingEventArgs

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

@dlev如果我删除了'新System.EventHandler()'的东西,当我点击标签,它说明不了什么,因为功能不叫。 – noobprogrammer 2013-04-11 15:12:50

回答

0

你的代码是一个有点混乱。当用户想要退出应用程序时,用户点击label7?您正在订阅的Click事件在引发时不提供FormClosingEventArgs。 Click是一个EventHandler事件,这意味着它在提出时提供了一个EventArgs对象。 EventArgs类中没有取消属性。

看起来你想在用户点击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; 
+0

它的工作原理,谢谢! – noobprogrammer 2013-04-11 15:48:28

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 
+0

如果我将'public void label7_Click(object sender,FormClosingEventArgs e)'更改为'public void label7_Click(object sender,EventArgs e)'它会一直显示错误,因为EventArgs中没有方法'e.Cancel' 我在我的方式从窗体退出确认... – noobprogrammer 2013-04-11 15:27:18

+0

FormClosingEventArgs只适用于窗体[FormClosing](http://msdn.microsoft.com/en-us/library/system.windows.forms.form.form.formclosing.aspx )事件。 – Powerlord 2013-04-11 15:30:59

+0

我试过了你的代码,但是当我点击'否'或'是'时,消息框再次显示,然后我点击其中一个,最后表单最后关闭(是)或返回窗体(否)。所以,我必须点击两次以确认结束表格。 – noobprogrammer 2013-04-11 15:35:21