当单击按钮"开始"时,我实现了一个处理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方法 Select 语言的显示对话框:

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);
        }

事件单击" Select 语言"窗体上的"确认 Select 语言"按钮:

private void btnConfirmLanguage_Click(object sender, EventArgs e)
        {
            //close dialog
            this.Close();
        }

关闭对话框NotFoundSheet窗体的事件单击关闭按钮:

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;
        }

Issue:

Update: All References btnImport_Click: References btnImport_Click

UI: FormSelectLanguage 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;

每次单击btnImportbtnImport_Click将被调用两次.

Csharp相关问答推荐

如何使用C#和Graph API从Azure Directory获取用户详细信息

在Linq中调用需要limit和offset的方法''''

哪个nuget包含SecurityStampValidatorOptions

WPF Windows初始化正在锁定. Net 8中分离的线程

在一个模拟上设置一个方法,该模拟具有一个参数,该参数是一个numc函数表达式

MS Graph v5.42.0:在寻呼消息时更改页面大小

当索引和外键是不同的数据类型时,如何设置导航属性?

在Windows Plesk上发布ASP.NET Core 7 Web API-错误:无法加载文件或程序集';Microsoft.Data.SqlClient';

获取混淆&Quot;模糊引用&Quot;错误

如何在发布NuGet包之前设置命名空间?

Azure函数正在返回值列表,但该列表在Chrome中显示为空

使用C#12中的主构造函数进行空判断

在C#和HttpClient中使用REST API

C#;AvaloniaUI;MVVM;当另一个窗口上的按钮被单击时,如何更新视图图像源?

.NET文档对继承的困惑

C#-如何将int引用获取到byte[]

我想我必须手动使用res1(字符串形式的PowerShell哈希表)

身份验证中间件如何处理多个方案

在SQL中删除少于24小时的令牌

如何在Blazor 8 RC2静态模式下以编程方式导航到另一个页面