[英]Expandable column using TableLayoutPanel (from code)
我正在嘗試使3列TableLayoutPanel的中間列可擴展。 我從代碼而不是設計師那里做的一切都是學習練習。
中間列有一個文本框,左右列各有一個按鈕:
從截圖中可以看出,第二列尚未展開。
我正在遵循https://stackoverflow.com/a/22283690/492336的建議 - 我將TextBox控件的Dock設置為Fill,並將面板的Dock設置為Fill:
var panel = new TableLayoutPanel();
panel.RowCount = 1;
panel.ColumnCount = 3;
panel.Controls.Add(new Button());
panel.Controls.Add(new TextBox());
panel.Controls.Add(new Button());
panel.Controls[0].Text = "Button1";
panel.Controls[2].Text = "Button2";
panel.Controls[1].Dock = DockStyle.Fill;
panel.Dock = DockStyle.Fill;
我還通過將列設置為AutoSize
嘗試了https://stackoverflow.com/a/7279996/492336中的建議:
panel.ColumnStyles.Clear();
panel.ColumnStyles.Add(new ColumnStyle(SizeType.AutoSize));
panel.ColumnStyles.Add(new ColumnStyle(SizeType.AutoSize));
panel.ColumnStyles.Add(new ColumnStyle(SizeType.AutoSize));
但這也沒有效果。
我在這做錯了什么?
如果您希望中間列展開並占用TableLayoutPanel
所有剩余空間,請在控件上執行以下設置:
AutoSize
。 Percent
,值為100
。 TextBox
的Dock
屬性設置為Fill
。 這樣,中間列將展開以填充TableLayoutPanel
剩余空間。 現在,如果您希望TableLayoutPanel
占用Form
所有寬度,您可以將其Dock
屬性設置為Fill
或Top
。 你也可以把它做大,並設置合適的Anchor
,以便根據Form
大小改變它的大小。
var panel = new TableLayoutPanel();
panel.RowCount = 1;
panel.ColumnCount = 3;
panel.Controls.Add(new Button());
panel.Controls.Add(new TextBox());
panel.Controls.Add(new Button());
panel.Controls[0].Text = "Button1";
panel.Controls[2].Text = "Button2";
panel.Controls[1].Dock = DockStyle.Fill;
panel.Dock = DockStyle.Fill;
panel.ColumnStyles.Clear();
panel.ColumnStyles.Add(new ColumnStyle(SizeType.AutoSize));
panel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100)); // This is the changed part
panel.ColumnStyles.Add(new ColumnStyle(SizeType.AutoSize));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.