2013-05-17 181 views
0

我在Form.cs事件處理程序與FormClosingEventArgs - C#

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'」

我該怎麼辦?

回答

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

您的代碼有點混亂。當用戶想要退出應用程序時,用戶點擊label7?您正在訂閱的Click事件在引發時不提供FormClosingEventArgs。 Click是一個EventHandler事件,這意味着它在提出時提供了一個EventArgs對象。 EventArgs類中沒有取消屬性。 – noobprogrammer

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 
    } 
} 
1

您試圖將FormClosing事件的事件處理程序設置爲標籤的單擊事件。
這兩個事件有不同的簽名,因此不兼容。

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; 
     } 

    } 
}