我在基本表单上有一个递归方法,它接受一个控件和一个启用标志.它遍历表单上的每个控件,并根据控件类型,相应地设置控件的背景颜色,并将enabled属性设置为参数.
所以通常,该方法被称为传递(this)作为控件,它遍历所有控件及其控件并相应地设置事物.这已经工作正常但是表单已经添加了越来越多的控件,你实际上可以看到控件一个接一个地禁用它看起来并不好看.
有没有人知道如何重写或阻止它逐一显示每个控件的禁用过程?像SuspendLayout这样的东西会在这种情况下起作用吗?它不是一个选项,可以在表单中添加一个面板,只是禁用它并在最后重新启用它,因为我有大约200个表单继承自这个基本表单,并且不能通过每个表单并强制它将控件添加到面板.这也行不通,因为它不仅可以启用/禁用控件,还可以应用其他逻辑.
将修改包含在:
form.SuspendLayout();
Run Code Online (Sandbox Code Playgroud)
和
form.ResumeLayout(false); // read the doc about "false", might be a little unsafe
Run Code Online (Sandbox Code Playgroud)
此外,遍历控制层次结构可能非常耗时.你可以这样做一次并将它们缓存在一个列表中,然后在那之后引用该列表.