2012-03-01 58 views
0

昨天我發現當您需要在運行時創建控件時,您可以使用LauyoutEngine將控件放置在正確的位置。我總是使用TableLayoutPanel這個,但我必須說,LayoutEngine工作更好,我現在有更多的控制權。什麼時候在winforms中調用LayoutEngine?

但我想知道,這是如何工作在引擎蓋下?何時調用LayoutEngine屬性?什麼時候使用佈局引擎是最佳做法?

回答

2

在Control的(基本)構造函數中訪問/創建(並緩存!)LayoutEngine屬性。所以如果你想使用它,你需要繼承Control或Panel的子類並覆蓋LayoutEngine。

儘量避免它。你的UI組件:

  • 是相當簡單的?不要使用它,你會在腳下射擊自己。
  • 變得越來越複雜?試着通過合成多個面板來解決它,它們會讓你走得很遠。
  • 可能在其他地方重新使用?儘量不要使用它,你不會得到所有不同的佈局用例(Padding/Margin/DockStyle/DockPadding/Anchors/AutoSize/AutoScroll/...),它會變得一團糟。

也許,如果你的UI組件

  • 是一個由更多內部控制的
  • 你試圖做一些花哨的,需要更多的控制
  • 沒有內部控制應被收購/擴展
  • 你願意花費更多的時間,而不是找出爲什麼你的TableLayoutPanel/FlowLayoutPanel/...沒有按照你想要的方式進行佈局

...然後通過一切手段,給它一槍!你可以得到一些快速的結果,但你會發現自己重寫佈局方法比你想要的更多。

相關問題