2013-04-11 68 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