繁体   English   中英

旧表单仍然显示winforms c#

[英]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: 参考 btnImport_Click

用户界面: 表单选择语言 DialogNotFoundSheet

我不完全知道您对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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM