c# - 在 WinForms 中调整单个控件的大小

标签 c# windows winforms user-interface resize

我如何在 C#/WinForms 中设计一个 UI,它恰好包含几种不同的控件类型,以便在用户调整窗口大小时仅调整 ListView 控件的大小?

最佳答案

有两种主要方法可以使控件根据父容器(在您的情况下为表单)的大小变化自动调整大小:

  1. 将控件的 Dock 属性设置为 DockStyle.Fill。
  2. 将 anchor 属性设置为“上、下、左、右”

将 Dock 属性与 Dock.Fill 一起使用

此方法的优点是它获取整个控件并告诉它始终填充父容器的整个客户区(在您的例子中为 Form 客户区)。如果你想做一些事情,比如用 ListControl 或 TreeView 或类似的东西填充表单,这很有用。但是,如果您想在使用其他控件的同时缩放单个控件(如您所指出的那样),它就没有那么有用了。在这种情况下,您需要将那些其他控件的 Dock 属性设置为 DockStyle.Top 或 DockStyle.Bottom,以使它们 float 在您的主要调整大小控件的上方或下方。

这很麻烦,而且还限制了其他控件的布局选项。您可以通过停靠两个 Panel 控件来缓解该问题,一个位于 Form 的顶部,另一个位于 Form 的底部。这些面板将保持在固定位置,而中间区域(使用 DockStyle.Fill 控件)随父窗体缩放。然后,您可以在这些“页眉”和“页脚”面板中的任何布局配置中放置任何控件。

这种使用停靠面板的复合表单构建非常强大。坦率地说,当他们在 .NET 1.0 WinForms 中引入它时,它改变了 .NET 的游戏规则。

将 Anchor 属性与“Top, Bottom, Left, Right”一起使用

如果您只想在窗体比例上拥有一个控件,而其他控件则“卡在”边缘,请使用 Anchor 属性。对于希望保留在顶部的控件,将 Anchor 属性设置为“Top, Left”(默认值)。对于希望留在底部的控件,将 Anchor 属性设置为“Bottom, Left”。对于希望随表单/对话框增加宽度的控件(例如单行文本框控件),将 Anchor 属性设置为“Left, Right”(并设置 Top 或 Bottom,具体取决于您是否希望它作为顶部移动或对话框底部发生变化。

如果您希望控件在所有方向上都可以使用 Form 调整大小,请将 Anchor 属性设置为“Top、Left、Bottom、Right”。对于“主控件”类型的东西非常有用,例如显性列表框、树控件或多行文本框。

对于您需要的东西,不要乱用 AutoSize 或 AutoSizeMode...这些属性控制控件如何根据其自身内容更改大小,而不是如何根据其容器的行为调整大小。将 AutoSize/AutoSize 模式视为内向型,而 Anchor/Dock 则是外向型。如果您同时使用这两种调整大小的方法,您会得到一些非常奇怪的行为。通常没有用。

关于c# - 在 WinForms 中调整单个控件的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/770094/

相关文章:

c# - 将类转换为派生类

c++ - 标识符 "hWnd"未定义

windows - 允许保存文件但不允许查看?

c# - 从资源加载 .dic 和 .aff 文件?

c# - 适当使用静态方法

c# - 如何在 C# 中裁剪倾斜图像

c# - 如何判断 X.509 证书是否可导出?

c# - .NET:TextBox 的 TextChanged 事件并不总是触发,即使 KeyUp 和 KeyDown 正在触发

C# 复杂的 TreeView 设计

c# - 将两个查询合并为一个查询