C#:SuspendLayout是否级联到子控件?
我是否必须自己迭代控件的子节点才能调用suspendlayout? 和他们的大孩子?盛大的孩子?盛大的大孩子?
由于
答案 0 :(得分:1)
是; SuspendLayout停止正在绘制的控件(或者更确切地说是正在处理的布局请求),默认情况下会将子结构向下移动。
换句话说:“没有人”再次调用绘画程序。
答案 1 :(得分:0)
SuspendLayout
不会递归传播,但是根据您的工作,仅挂起特定的控件就足够了。
经验法则是:挂起您将要弄乱其布局的控件多次。
例如:
Size
属性,则无需暂停任何操作。子项将只被更改一次,而这将仅导致父项发生一次更改。Size
,则应仅暂停父级。孩子们每个只能获得一个调整大小的尺寸,因此无需将其暂停。但是这些孩子中的每个孩子都会导致父母重新宣导,因此,一旦您致电ResumeLayout
,暂停父母就可以全部 进行所有这些宣告。Size
,Location
和Bounds
属性,则应暂停父项和子项。它们都将触发多个布局事件。只要确保仅在所有子代都恢复后才恢复父代即可。否则,每个孩子的ResumeLayout
都将导致父级的重新参与,因此从一开始就将其挂起不会带来任何好处。Size
,则无需暂停任何操作。这将间接地修改一堆孩子,但是父母要对其进行修改,因此它应该已经知道如何有效地处理这些孩子。例如,每次用户调整窗口大小时,它便已执行该操作。