【问题标题】:How to grow TextBox in WinForm?如何在 WinForm 中增加 TextBox?
【发布时间】:2015-08-19 22:03:59
【问题描述】:

在我正在处理的 WinForm 中,我有两个 TextBox 小部件和一个位于文本框之间的按钮。当窗体启动并且 winform 处于其最小大小时,TextBoxes 看起来与预期的一样。靠近中间按钮的项目之间没有间隙。如上图所示。

但是,当用户最大化 winform 时,TextBoxes 会移动到正确的位置,但不会展开以保持靠近中心的按钮。文本框 A 锚定在左侧,文本框 B 锚定在右侧。所以对齐是正确的。如下图所示。

现在的问题是如何让文本框 A 向右增长,使其靠近中间的按钮,而文本框 B 向左增长,使其也靠近按钮?

谢谢!埃里克

【问题讨论】:

    标签: winforms


    【解决方案1】:

    使用TablelayoutPanel 控制。 From MSDN

    用一行三列创建TableLayoutPanel
    第一列:SizeType: percent, 50%
    第二列:SizeType: absolute, 75(按钮宽度)
    第三列:SizeType: percent, 50%

    然后将文本框和按钮放在列中。
    为文本框和按钮属性设置.Dock = Fill
    文本框的大小将随着TableLayoutPanel中列的大小而自动更改

    TableLayouPanelDock 属性设置为FillBottomTop。那么 TableLayoutPanel 会随着表单宽度的改变而改变宽度。

    【讨论】:

      【解决方案2】:

      使用简单的锚点您无法实现这一点。 但你可以使用TableLayoutPanel

      • 在表单上放置TableLayoutPanel 并将Dock 设置为Fill(或Top/Bottom
      • 制作 3 列。
        • 第 1 列:百分比,50%
        • 第 2 列:绝对,设置 Button 的所需大小(例如 100 像素)
        • 第 3 列:百分比,50%
      • 将 TextBoxA 放到 Column1 中,并设置 Anchor Left 和 Right
      • 将按钮放入 Column2,然后清除锚点
      • 将 TextBoxB 放到 Column3 中,并设置 Anchor Left 和 Right

      没有TableLayoutPanel,您可以进行以下操作:

      • TextBoxA:左右锚定
      • Button 和 TextBoxB:锚定右侧 所以只有 TextBoxA 会增长。

      【讨论】:

        【解决方案3】:

        您可以为按钮和文本框使用 Anchor 属性 -

        按钮 A - 锚点 - 左右 按钮 B - 锚点 - 左右

        您还可以根据需要设置文本框锚属性并控制所有这三个控件的位置。

        【讨论】:

          猜你喜欢
          • 2014-06-04
          • 2013-04-18
          • 1970-01-01
          • 2021-04-01
          • 2012-12-08
          • 2012-05-08
          • 1970-01-01
          • 1970-01-01
          • 2020-03-07
          相关资源
          最近更新 更多