C# winforms中禁用控件上的意外事件触发

C# winforms中禁用控件上的意外事件触发,c#,winforms,C#,Winforms,我有一个基本表单,它有不同的控件,如按钮、轨迹栏等。在任何事件中,我都会使用 void ChangeEnabled(bool enabled) { foreach (Control c in this.Controls) { c.Enabled = enabled; } } 一旦我处理完数据,就让它们返回 在控件禁用期间,如果单击轨迹栏或任何其他具有事件处理程序的控件,则在启用控件时会执行相应的事件处理程序代码 如何避免触发此事件?显示使用此功能的代码。

我有一个基本表单,它有不同的控件,如按钮、轨迹栏等。在任何事件中,我都会使用

void ChangeEnabled(bool enabled)
{
    foreach (Control c in this.Controls)
    {
        c.Enabled = enabled;
    }
}
一旦我处理完数据,就让它们返回

在控件禁用期间,如果单击轨迹栏或任何其他具有事件处理程序的控件,则在启用控件时会执行相应的事件处理程序代码


如何避免触发此事件?

显示使用此功能的代码。这可能是因为您在禁用和启用之间阻塞了UI线程,这是因为我有一个等待处理完成的循环?您没有显示代码,所以我在这里猜测,但请尝试在后台线程的中间运行代码并等待它。这不是对您问题的回答,但有一个提示:不要循环所有控件来设置enable属性,只需使用外部容器并将enable属性更改为该容器。这将为它的所有子控件设置Enable。它更好、更快,而且最重要的是,框架可以为您实现这一点,它有自己的逻辑来循环子控件。显示使用此函数的代码。这可能是因为您在禁用和启用之间阻塞了UI线程,这是因为我有一个等待处理完成的循环?您没有显示代码,所以我在这里猜测,但请尝试在后台线程的中间运行代码并等待它。这不是对您问题的回答,但有一个提示:不要循环所有控件来设置enable属性,只需使用外部容器并将enable属性更改为该容器。这将为它的所有子控件设置Enable。它更好、更快,而且最重要的是,框架为您提供了它自己的逻辑来循环子控件。