C# 事件的问题
我正在使用一个带有“确定”和“取消”按钮的表单。当用户单击Cancel按钮时,用户将收到一条消息,确认表单是否应关闭。单击OK=close,但是当单击Cancel时,表单不应该关闭,但这就是现在发生的事情,我已经测试过为表单添加一些事件代码,但仍然关闭。我该怎么做才能让它正常工作C# 事件的问题,c#,C#,我正在使用一个带有“确定”和“取消”按钮的表单。当用户单击Cancel按钮时,用户将收到一条消息,确认表单是否应关闭。单击OK=close,但是当单击Cancel时,表单不应该关闭,但这就是现在发生的事情,我已经测试过为表单添加一些事件代码,但仍然关闭。我该怎么做才能让它正常工作 // Button - Cancel private void btnCancel_Click(object sender, EventArgs e) { // Mess
// Button - Cancel
private void btnCancel_Click(object sender, EventArgs e)
{
// Message box to confirm or not
if (MessageBox.Show("Do you really want to cancel and discard all data?",
"Think twice!", MessageBoxButtons.YesNo, MessageBoxIcon.Question) ==
DialogResult.Yes)
{
// Yes
//this.Close(); // Closes the contact form
m_closeForm = false;
}
else
{
m_closeForm = false;
// No
// Do nothing, the user can still use the form
}
}
private void ContactForm_Formclosing(object sender, FormClosingEventArgs e)
{
if (m_closeForm)
e.Cancel = false; // Stänger formuläret. Inget skall hända
else
e.Cancel = true; // Stänger inte formuläret
}
您可以通过在表单关闭事件中添加带有对话框结果的messagebox来尝试以下操作。我认为这是更好的方法:
private void btnCancel_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Do you really want to cancel and discard all data?", "Think twice!",
MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
{
this.Close();
}
// Form wont close if anything else is clicked
}
private void btnOk_Click(object sender, EventArgs e)
{
// PerformAction()
this.Close();
}
我想这就是您要查找的内容。您可以通过在表单关闭事件中添加带有对话框结果的messagebox来尝试以下操作。我认为这是更好的方法:
private void btnCancel_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Do you really want to cancel and discard all data?", "Think twice!",
MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
{
this.Close();
}
// Form wont close if anything else is clicked
}
private void btnOk_Click(object sender, EventArgs e)
{
// PerformAction()
this.Close();
}
我想这就是你要找的。要取消结账,你可以使用
FormClosingEventArgs
属性,即e.Cancel
Totrue
在表单的FormClosing
事件中使用此代码
if (MessageBox.Show("Do you really want to cancel and discard all data?",
"Think twice!", MessageBoxButtons.YesNo, MessageBoxIcon.Question) ==
DialogResult.Yes)
{
e.Cancel = false;
}
else
{
e.Cancel = true;
}
要取消关闭,您可以使用
FormClosingEventArgs
属性,即e.Cancel
到true
在表单的FormClosing
事件中使用此代码
if (MessageBox.Show("Do you really want to cancel and discard all data?",
"Think twice!", MessageBoxButtons.YesNo, MessageBoxIcon.Question) ==
DialogResult.Yes)
{
e.Cancel = false;
}
else
{
e.Cancel = true;
}
我想您会发现在表单的Designer.cs文件中有以下行:
this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
删除这一行,无论客户MessageBox的结果如何,您的表单将不再自动关闭。我想您会在表单的Designer.cs文件中找到以下行:
this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
删除这一行,无论客户MessageBox的结果如何,您的表单将不再自动关闭。这永远不是一个好的描述。请阅读并编辑您的问题。带有“取消”选项的消息框应位于表单关闭事件中。请将DialogResult属性设置回“无”。“它不工作”永远不是一个好的描述。请阅读并编辑您的问题。带有“取消”选项的消息框应位于表单关闭事件中。请将DialogResult属性设置回“无”。嗯,但这不是表单上的“取消”按钮,而是用户单击表单上的“取消”按钮时出现的消息框中的“取消”按钮。如果用户单击messagebox中的cancel按钮,我希望表单保持可见。你的代码中的messagebox是如何可见的?好吧,现在我真的很困惑。是否希望用户单击表单某处的“取消”按钮时出现消息框?或者,当您关闭表单时,是否要处理单击“消息框中的取消按钮”的对话框结果?我有一个带有“确定”和“取消”按钮的表单。当用户单击“确定”按钮时,将执行som操作并关闭表单。但是,如果用户单击“取消”按钮,则会显示一个消息框,询问用户是否确实要关闭表单,如果用户单击“确定”,则表单应关闭,如果用户单击“取消”,则表单应保持可见。我希望这是清楚的?您的代码正在工作,但当我单击表单中的OK按钮时,我也会收到该消息框。当在表单中单击OK时,不应该出现meassagebox,因为我希望它现在可以工作,而无需您的上次编辑。谢谢你的帮助!嗯,但这不是表单上的取消按钮,而是当用户点击表单上的取消按钮时出现的消息框中的取消按钮。如果用户单击messagebox中的cancel按钮,我希望表单保持可见。你的代码中的messagebox是如何可见的?好吧,现在我真的很困惑。是否希望用户单击表单某处的“取消”按钮时出现消息框?或者,当您关闭表单时,是否要处理单击“消息框中的取消按钮”的对话框结果?我有一个带有“确定”和“取消”按钮的表单。当用户单击“确定”按钮时,将执行som操作并关闭表单。但是,如果用户单击“取消”按钮,则会显示一个消息框,询问用户是否确实要关闭表单,如果用户单击“确定”,则表单应关闭,如果用户单击“取消”,则表单应保持可见。我希望这是清楚的?您的代码正在工作,但当我单击表单中的OK按钮时,我也会收到该消息框。当在表单中单击OK时,不应该出现meassagebox,因为我希望它现在可以工作,而无需您的上次编辑。谢谢你的帮助!