我正在尝试将N个控件停靠在容器中。我希望他们都填满整个宽度,但堆叠。我想要一个特定的控件(当前是最后一个)来填充剩余的空间,而其他所有控件都有固定的大小。
此:
Button b1 = new Button() { Text = "Button 1", Dock = DockStyle.Top };
Button b2 = new Button() { Text = "Button 2", Dock = DockStyle.Top };
Button b3 = new Button() { Text = "Button 3", Dock = DockStyle.Fill };
Controls.Add(b1);
Controls.Add(b2);
Controls.Add(b3);
产生这个:
正如您所看到的,按钮3完全正是我所说的:Fill
父母。但那不是我想要的它要做的事情。除了手动放置和处理调整大小事件等外,如何让Button 3填充剩余空间?
注意:我不使用设计师。
答案 0 :(得分:25)
虽然添加b3.BringToFront()
(在添加到Controls
之后)工作,但这里最简单的解决方案是简单地更改按钮添加到Controls
的顺序。以下代码完美无缺:
Button b1 = new Button() { Text = "Button 1", Dock = DockStyle.Top };
Button b2 = new Button() { Text = "Button 2", Dock = DockStyle.Top };
Button b3 = new Button() { Text = "Button 3", Dock = DockStyle.Fill };
Controls.Add(b3); // this guy first!
Controls.Add(b1);
Controls.Add(b2);
结果:
如果你仔细看看这个小例子中的边框,这实际上似乎比BringToFront()
更好。
答案 1 :(得分:6)
基本上DockStyle.Fill
控件应首先添加到Controls
集合中。
答案 2 :(得分:5)
使用设计器中Button 3上的Bring to Front,或者调用此代码:
b3.BringToFront();
答案 3 :(得分:-1)
按钮1和2应将dock属性设置为top,并使按钮3占用剩余空间,您可以将其dock属性设置为bottom。
dock = fill将使按钮填满整个空间而不仅仅是剩余的空间。底部将像顶部一样起作用,但将其锚定到父容器的底部。按顺序应用按钮1,2,3。
此外,你可以将dock属性设置为所有三个的top,只需将三个按钮设置为不同。