我在表单的 FormClosing 方法中添加了是/否/取消消息框。现在这是消息框文本:你想保存数据吗?
如果用户点击了取消按钮,我不是专业人员而且不知道如何处理?
确切地点击取消按钮的结果必须是表格保持打开。
如何防止在 FormClosing 方法中关闭我的表单?
我写到目前为止:;)
DialogResult dr = MessageBoxFarsi.Show("Do You Want to Save Data?","",MessageBoxButtons.YesNoCancel,MessageBoxIcon.Warning);
//...
else if (dr == DialogResult.Cancel)
{
???
}
请帮我完成我的代码!
谢谢
答案 0 :(得分:11)
FormClosing有一个布尔参数,如果函数返回,如果设置为True,将取消关闭表格IIRC。
编辑:例如,
private void Form1_FormClosing(Object sender, FormClosingEventArgs e) {
// Set e.Cancel to Boolean true to cancel closing the form
}
答案 1 :(得分:9)
实际上我认为你缺少事件处理程序,哦,即使没有偶数处理程序,你也不能转向它。您必须使用这样的事件处理程序添加事件。
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#中写入并在此处复制粘贴。我刚刚在这里写了它。 :)
答案 2 :(得分:7)
您可以拥有以下内容:
if(dr == DialogResult.Cancel)
{
e.Cancel = true;
}
else if(dr == DialogResult.Yes)
{
//Save the data
}
上述代码只应在您选择是或否时关闭表单,并在您选择是时保存数据。
答案 3 :(得分: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();
}
}
答案 4 :(得分:0)
您可以尝试以下方法:
if (MessageBox.Show("Are you sure you want to quit?", "Attention!!", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning) == DialogResult.Yes)
{
//this block will be executed only when Yes is selected
MessageBox.Show("Data Deleted", "Done", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
else
{
//this block will be executed when No/Cancel is selected
//the effect of selecting No/Cancel is same in MessageBox (particularly in this event)
}
如果需要,也可以使用No
类对Cancel
和DialogResult
按钮单击进行操作