我正在尝试使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));
但这也没有效果。
我在这里做错了什么?
答案 0 :(得分:3)
如果您希望中间列展开并占用TableLayoutPanel
中的所有剩余空间,请在控件上执行以下设置:
AutoSize
。Percent
,其值为100
。Dock
的{{1}}属性设置为TextBox
。这样,中间列将展开以填充Fill
的剩余空间。现在,如果您希望TableLayoutPanel
占据TableLayoutPanel
的所有宽度,则可以将其Form
属性设置为Dock
或Fill
。此外,您可以将其设置得更大,并为其设置合适的Top
,以便根据Anchor
尺寸更改其大小。
Form