何时在winforms中调用LayoutEngine?

时间:2012-03-01 09:16:22

标签: c# winforms

昨天我发现当你需要在运行时创建控件时,可以使用LauyoutEngine将控件放在正确的位置。我总是使用TableLayoutPanel,但我必须说,LayoutEngine效果更好,我现在有更多控制权。

但我想知道,这是如何工作的?何时调用LayoutEngine属性?什么时候使用布局引擎是最佳做法?

1 个答案:

答案 0 :(得分:2)

在Control的(基础)构造函数中访问/创建(并缓存!)LayoutEngine属性。因此,如果要使用它,则需要子类化Control或Panel并覆盖LayoutEngine。

尽量避免它。您的UI组件:

  • 相当简单?不要使用它,你会用脚射击自己。
  • 变得越来越复杂了?尝试通过合成多个面板来解决它,它们可以让你走得很远。
  • 可能会在其他地方重复使用?尽量不要使用它,你不会得到所有不同的布局用例(Padding / Margin / DockStyle / DockPadding / Anchors / AutoSize / AutoScroll / ...),这将是一团糟。

也许,如果您的UI组件

  • 是由更多内部控件组成的
  • 你正试图做一些花哨的事情并需要更多的控制
  • 没有任何内部控制应该是可行的/扩展的
  • 你愿意花更多的时间而不是弄清楚为什么你的TableLayoutPanel / FlowLayoutPanel / ......没有按照你想要的方式进行布局

...然后一定要试一试!你可以得到一些快速的结果,但你会发现自己重写布局方法比你想要的更多。