首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >停靠多个控件-一个控件填充剩余空间

停靠多个控件-一个控件填充剩余空间
EN

Stack Overflow用户
提问于 2011-10-13 12:17:34
回答 4查看 19.8K关注 0票数 25

我正在尝试将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填充剩余空间?

注意:我没有使用设计器。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 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()更有效。

票数 31
EN

Stack Overflow用户

发布于 2013-10-24 22:55:49

基本上,应该首先在Controls集合中添加DockStyle.Fill控件。

票数 6
EN

Stack Overflow用户

发布于 2011-10-13 12:27:02

在设计器中使用Button 3上的“带到最前面”,或调用此代码:

b3.BringToFront();
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7749408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档