代码之家  ›  专栏  ›  技术社区  ›  Axarydax

WinForm控件(面板等)是否可以像WebForm控件一样增长?

  •  1
  • Axarydax  · 技术社区  · 14 年前

    我正在将一个应用程序从ASP.NET WebForms转换为WinForms。有一个ASP.NET页包含一个包含多个自定义控件的ListView/转发器,而这些控件又包含一个包含其他自定义控件的ListView。基本上,布局看起来像一个树视图,但是在每个节点/叶上,很少有像组合框之类的控件。

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

    我想在一个WinForms应用程序中做同样的事情-所以我将有一个用户控件,它将在面板的某些变体(流、表布局)中包含许多控件,并且控件内部可能有其他控件,等等。

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

    我只想得到一些方向正确的一般性的指针。谢谢。

    4 回复  |  直到 14 年前
        1
  •  5
  •   serhio    14 年前

    使用 Anchor Dock 容器属性。

        2
  •  2
  •   Jeremy    14 年前

    是的,关于锚和码头的阐述……试试这个

    -将面板放置在空窗体上,并将其Dock属性设置为Top

    -在面板中放置一个文本框,并将其固定到完全…它应该填充整个顶部面板

    -在窗体上放置拆分器,如果尚未正确停靠,请将其停靠设置为顶部。

    -将另一个面板放在拆分器下方,并将其停靠位置设置为“填充”

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

    现在,您有了一个具有两个可恢复文本框的表单,当表单恢复时将调整其大小。

    *您可能需要将textbox multiline属性设置为true,但不确定。

    希望这有帮助。

        3
  •  1
  •   StuartLC    14 年前

    将控件锚定到父级。锚定所有四个侧面会使其伸展。

        4
  •  0
  •   AllenG    14 年前

    如果锚定和停靠答案对您不起作用,则还有另一个选项。它并不漂亮,但您可以访问控件的属性,并在运行时动态更改它们。你会做如下的事情: if(listBox.Items.Count > [yourVal]) listBox.height = [yourFormula] 或者什么的。

    我已经有一段时间没有做过一个Win表单了(我现在还没有启动IDE),但我很确定在表单上甚至有一个滚动面板或其他滚动控件可以设置。

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