WinForm控件(面板等)是否有可能像webform控件一样增长?

时间:2010-07-29 13:19:56

标签: winforms layout scroll panel

我正在将一个应用程序从ASP.NET WebForms转换为WinForms。有一个asp.net页面包含一个ListView / Repeater,它包含几个自定义控件,而这些控件又包含一个带有其他自定义控件的ListView。基本上布局看起来像TreeView,但是在每个节点/叶子上都有很少的控件,比如组合框等。

当它在ASP.NET中时,页面会自动放置,因此它有几个屏幕高 - 如果我在面板中添加20个按钮,它将会增长,浏览器将获得滚动条。

我想在WinForms应用程序中做同样的事情 - 所以我将拥有一个用户控件,它将在Panel(Flow,Table layout)的某些变体中包含许多控件,并且控件可能具有他们内部的另一个控制等等。

问题是,当我制作winforms app时,每个控件在设计时都有特定的高度。我希望一些用户控件能够随着内容的增长而增长 - 所以他们会加起来。在主窗体中,应该有一个垂直滚动条,就像在生成的页面比屏幕高的时候在Web浏览器中一样。

我想在正确的方向上得到一些一般性的指示。感谢。

4 个答案:

答案 0 :(得分:5)

使用AnchorDock容器属性。

答案 1 :(得分:2)

是的,要解决Anchor和Dock ......试试这个

- 在空表单上放置一个Panel,并将其dock属性设置为Top

- 在面板中放置一个文本框,并将其停靠在Full ...它应该填满整个顶部面板

- 在表单上放置拆分器,如果尚未正确停靠,则将其停靠点设置为顶部

- 在拆分器下方放置另一个面板,并将其Dock设置为Fill

- 在下面板中放置另一个文本框并将其填充

现在您有一个包含两个可恢复文本框的表单,并在表单完成时调整大小。

*您可能必须将文本框MultiLine属性设置为true但不确定。

希望这有帮助。

答案 2 :(得分:1)

将控件锚定到父级。锚定所有四个边将导致它伸展。

答案 3 :(得分:0)

如果锚定和对接答案不适合您,还有另一种选择。它并不漂亮,但您可以访问控件的属性并在运行时动态更改它们。您可以执行以下操作:if(listBox.Items.Count > [yourVal]) listBox.height = [yourFormula]或其他内容。

我已经有一段时间了,因为我已经完成了Win Form(而且我目前还没有激活我的IDE),但我很确定甚至还有一个ScrollPanel或其他滚动控件可以设置在你的形式。

也就是说,当你使用WinForms时,你可以让用户做的滚动越少越好。