1
我有放置在用戶控件,然後放置在SplitContainer的一個TableLayoutPanel。行以編程方式添加.TableLayoutPanel被錨定爲Top | Left | Right,因此在添加行後,其高度將被重新計算並向下展開。
在TableLayoutPanel裏面,有2列。第一列的大小是絕對的,第二列的大小是自動大小
在每個單元格中都有一個標籤。在第二列的所有標籤的定義如下:
Label vName = new Label();
vName.AutoSize = true;
vName.Anchor = AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Bottom;
vName.Margin = new Padding(3);
vName.TextAlign = ContentAlignment.MiddleLeft;
vName.Name = "controlName";
vName.Text = "Some text here";
vName.DoubleClick += new EventHandler(vName_DoubleClick);
vName.Dock = DockStyle.None;
問題:
通常都工作的很好,標籤調整和一切,除了一個奇怪的場景:
- 標籤的文本類似於「固定設備 (33.33%)」,TableLauoutPanel第2列的寬度設置完全相同,因此所有 文本都顯示在一行中。
- 由一個像素和用戶控件被調整大小分配器距離的變化: 寬度減小時,標籤應調整大小和在標籤中的文本換行
- 標籤未調整大小和文本的第二線未示出,它也可能不換行(會有在文本位置改變中的標籤,如果是這樣的話)
- 一個像素分配器距離的變化再次和用戶控件被調整大小: 寬度進一步減小
- 標籤調整大小所有權利和所有文本顯示,包裝
同樣的事情發生在TableLayoutPanel的寬度增加時,但總是隻有當一個像素有差別時(包裝/不包裝文本)。
此外,更改碼頭和/或錨和/或標籤的邊框樣式屬性不起作用(我大概嘗試了所有可能的組合...)
該圖展示的問題一點:
我注意到你設置'Anchor'和左'碼頭= DockStyle.None' ......有沒有原因?碼頭應該幫助這一點。 – DonBoitnott
我在一開始就試過這個。沒有區別。 – Arie
您正在給佈局引擎衝突的說明。你說標籤應該自動調整AutoSize = true。但是,也可以說它應該使用Anchor屬性來觀察容器的大小。這往往會導致雙穩態佈局,因爲佈局請求有兩種解決方案。可能在你的情況下更多,因爲你也使柱子自動調整大小。你需要擺脫這種模糊性。首先通過切換錨點。 –