我正在尝试将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);
生成以下内容:
正如你所看到的,Button 3正在做我告诉它做的事情:Fill
父级。但这不是我想要它做的。除了手动放置和处理调整大小事件等之外,我如何才能让Button 3填充剩余空间?
注意:我没有使用设计器。
发布于 2011-10-14 08:32:43
虽然添加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()
更有效。
发布于 2013-10-24 22:55:49
基本上,应该首先在Controls
集合中添加DockStyle.Fill
控件。
发布于 2011-10-13 12:27:02
在设计器中使用Button 3上的“带到最前面”,或调用此代码:
b3.BringToFront();
https://stackoverflow.com/questions/7749408
复制相似问题