![](/img/trans.png)
[英]c# WinForms form still closes after setting e.Cancel = true in Form_FormClosing event
[英]Old form still display winforms c#
单击“开始”按钮时,我实现了处理 excel 文件的表单。 事件点击开始按钮:
private void btnImport_Click(object sender, EventArgs e)
{
showFormSelectLanguage();
if (CheckSheetFile() == true) {
using (WaitingForm frm = new WaitingForm(handleExcel))
{
frm.ShowDialog(this);
}
var dialogMessage = new DialogMessage();
dialogMessage.ShowDialog(this);
} else
{
ShowDialogNotFoundSheet();
}
}
选择语言的 showFormSelectLanguage 方法显示对话框:
private void showFormSelectLanguage()
{
var formSelectLanguage = new FormSelectLanguage();
formSelectLanguage.ShowDialog(this);
}
存在用于检查表 excel 的 ShowDialogNotFoundSheet 函数:
private void ShowDialogNotFoundSheet()
{
var dialogNotFoundSheet = new DialogNotFoundSheet();
dialogNotFoundSheet.setTextContent("Not found sheet");
dialogNotFoundSheet.ShowDialog(this);
}
事件在选择语言表单中单击确认选择语言按钮:
private void btnConfirmLanguage_Click(object sender, EventArgs e)
{
//close dialog
this.Close();
}
事件单击关闭按钮以关闭 DialogNotFoundSheet 表单:
private void btnCloseDialogNotFoundSheet_Click(object sender, EventArgs e)
{
this.Close();
}
CheckSheetFile 方法:
private bool CheckSheetFile()
{
var isCorrectFile = false;
try
{
xlWorkBook = xlApp.Workbooks.Open(txtFilePath.Text, System.IO.FileMode.Open, System.IO.FileAccess.Read);
var xlWorkBook1 = xlWorkBook.Sheets["SheetName"];
isCorrectFile = true;
}
catch (Exception e)
{
return false;
}
return isCorrectFile;
}
问题:当我在 DialogNotFoundSheet 表单上单击关闭按钮时。 然后 FormSelectLanguage 从仍然显示。 它重复。 如何解决? 预计2个表格可以关闭 谢谢!
我不完全知道您对btnImport_Click
做了什么,但是如果您的目的是一次禁用按钮的功能并在另一时间启用它,实际上您不必注册或取消注册点击事件,您可以简单地设置按钮的Enabled
属性。
//btnImport.Click += btnImport_Click;
btnImport.Enabled = true;
//btnImport.Click -= btnImport_Click;
btnImport.Enabled = false;
我对这个循环的原因的猜测是你已经多次调用+= btnImport_Click
,但是-= btnImport_Click
永远不会(或更少)运行。
例如,如果您这样做:
btnImport.Click += btnImport_Click;
btnImport.Click += btnImport_Click;
每次单击btnImport
时,都会调用btnImport_Click
两次。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.