2009-08-09 29 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(); 
    } 
}