C# winforms中何时调用LayoutEngine?

C# winforms中何时调用LayoutEngine?,c#,winforms,C#,Winforms,昨天我发现,当需要在运行时创建控件时,可以使用LauyoutEngine将控件放置在正确的位置。为此,我一直使用表格布局面板,但我必须说,布局引擎工作得更好,我现在有了更多的控制权 但我想知道,这在引擎盖下是怎么工作的?何时调用LayoutEngine属性?什么时候使用布局引擎是最佳实践?在控件的(基本)构造函数中访问/创建(并缓存!)LayoutEngine属性。所以,如果您想使用它,您需要将Control或Panel子类化并覆盖LayoutEngine 尽量避免。您的UI组件: 这相当简单

昨天我发现,当需要在运行时创建控件时,可以使用LauyoutEngine将控件放置在正确的位置。为此,我一直使用
表格布局面板
,但我必须说,
布局引擎
工作得更好,我现在有了更多的控制权


但我想知道,这在引擎盖下是怎么工作的?何时调用
LayoutEngine
属性?什么时候使用布局引擎是最佳实践?

在控件的(基本)构造函数中访问/创建(并缓存!)LayoutEngine属性。所以,如果您想使用它,您需要将Control或Panel子类化并覆盖LayoutEngine

尽量避免。您的UI组件:

  • 这相当简单吗?别用它,你会朝自己的脚开枪的
  • 是不是越来越复杂了?试着通过合成多个面板来解决这个问题,它们会让你走得很远
  • 可能在其他地方重复使用?尽量不要使用它,您将无法正确使用所有不同的布局用例(Padding/Margin/DockStyle/DockPadding/archors/AutoSize/AutoScroll/…),这将是一个混乱
也许,如果您的UI组件

  • 是由更多的内部控制组成的
  • 你想做些花哨的事,需要更多的控制
  • 任何内部控制都不应被接受/扩展
  • 你愿意花更多的时间来解释为什么你的TableLayoutPanel/FlowLayoutPanel/。。。没有按照您希望的方式进行布局
。。。那么无论如何,试试看!您可能会得到一些快速的结果,但您会发现自己重写布局方法的次数超出了您的期望