使用此方法:
private void disableControls()
{
foreach (Control c in this.Controls)
{
c.Enabled = false;
}
}
在只有5个控件的表单上,为什么这么慢?
您可以清楚地看到每个控件都被禁用。
编辑:
以下是一些更多细节:
我在表单中唯一的事件处理程序绑定到comboBox的IndexChanged。
我运行此方法的表单是使用showDialog从父表单调用的新表单。
实际上,当您单击按钮时,首先调用禁用控件方法。
我真的不知道为什么会这样做,我会尝试重新启动,看看它是否会变好。
答案 0 :(得分:1)
无法重现。这是一个简短但完整的程序,可以很快地禁用控件。如果你能想出一个慢的类似的,我们可以解决为什么它很慢。
using System;
using System.Drawing;
using System.Windows.Forms;
class Test
{
static void Main()
{
Form form = new Form();
for (int i = 0; i < 4; i++)
{
Button button = new Button
{
Text = "Dummy",
Location = new Point(10, i * 25)
};
form.Controls.Add(button);
}
Button disabler = new Button
{
Text = "Disable",
Location = new Point(10, 100)
};
disabler.Click += delegate
{
foreach (Control c in form.Controls)
{
c.Enabled = false;
}
};
form.Controls.Add(disabler);
Application.Run(form);
}
}