2009-08-09 83 views
3

我把是/否/取消消息框FormClosing我的表單的方法。現在這是消息框文本:您想要保存數據嗎?在FormClosing方法中處理取消按鈕是/否/取消消息框

我不是專業人士,不知道如何處理,如果用戶點擊取消按鈕? 正確點擊取消按鈕的結果必須是表格保持打開狀態。
如何防止關閉我的形式的FormClosing方法?

我寫到目前爲止:;)

DialogResult dr = MessageBoxFarsi.Show("Do You Want to Save Data?","",MessageBoxButtons.YesNoCancel,MessageBoxIcon.Warning); 

//... 
else if (dr == DialogResult.Cancel) 
{ 
    ??? 
} 

請幫助我完成我的代碼!
由於

回答

11

的FormClosing具有布爾參數,如果設置爲True時函數返回時,將取消關閉窗體,IIRC。

編輯:例如,

private void Form1_FormClosing(Object sender, FormClosingEventArgs e) { 
    // Set e.Cancel to Boolean true to cancel closing the form 
} 

See here

+0

非常感謝你! – mahdiahmadirad 2009-08-09 23:48:09

6

你可能有類似以下內容:

if(dr == DialogResult.Cancel) 
{ 
    e.Cancel = true; 
} 
else if(dr == DialogResult.Yes) 
{ 
    //Save the data 
} 

上面的代碼應該只如果選擇Yes或關閉的形式沒有了,當你選擇Yes,保存數據。

6

其實我覺得你缺少事件處理程序,哦,你甚至不能沒有,甚至處理轉向了這一點。您必須使用像這樣的事件處理程序來添加事件。

private void myform_Closing(object sender, FormClosingEventArgs e) 
{ 
    DialogResult dr = MessageBoxFarsi.Show("Do You Want to Save Data?","",MessageBoxButtons.YesNoCancel,MessageBoxIcon.Warning) 

    if (dr == DialogResult.Cancel) 
    { 
     e.Cancel = true; 
     return; 
    } 
    else if (dr == DialogResult.Yes) 
    { 
     //TODO: Save 
    } 
} 

//now add a default constructor 
public myform() // here use your form name. 
{ 
    this.FormClosing += new FormClosingEventHandler(myform_Closing); 
} 

原諒我,如果有這個代碼中的一些過錯拼寫,因爲我沒有在C#寫,複製粘貼在這裏。我只是寫在這裏。 :)

0

你應該試試這個功能

public DialogResult msgClose(string msg) 
{ 
    return MessageBox.Show(msg, "Close", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); 
} 

像這樣使用。

private void frm_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    if (conn.msgClose("Application close?") == DialogResult.No) 
     e.Cancel = true; 
    else 
    { 
     this.Close(); 
    } 
}