【问题标题】:How do I resize a UserControl to fit in a container in a windows form?如何调整 UserControl 的大小以适合 Windows 窗体中的容器?
【发布时间】:2018-10-04 05:38:21
【问题描述】:

我正在尝试以另一种形式将用户控件放入面板中。我尝试过停靠和自动调整大小,但似乎没有任何效果。

我正在尝试将其放入上面的面板中,但它隐藏了按钮。如何调整它的大小使其缩放到面板大小?

【问题讨论】:

  • 用户控件正确停靠,但您还需要将停靠应用于该用户控件内的控件,例如:将完全停靠应用于文本框等。
  • Buttons 插入单独的Panel。我在in this answer 留下了一些关于在父容器中停靠多个控件(Panels。主要是)的注释。看看有没有帮助。
  • 对接对我来说总是比锚更好。但问题是控件必须在正确的 Z 顺序中。因此,可能需要在您的面板上执行BringToFront(),这样它就不会与按钮重叠。我不清楚你的设置是什么。您想要停靠的面板是否包含按钮,或者您想要将其放在包含按钮的面板上?或者你想要做什么?

标签: c# winforms windows-forms-designer


【解决方案1】:

使用SplitContainer控件代替面板,它会解决你的问题。

【讨论】:

    【解决方案2】:

    您可以使用面板的Anchor 属性,将其设置为“全部”或“下、上、左、右”。它将与容器边框保持相同的间距,即如果您将容器变小,它会变小,反之亦然。

    【讨论】:

      【解决方案3】:

      在停靠用户控件之前,您需要确保用户控件的控件在调整大小时不会变得混乱。为此,您需要为用户控件锚属性的控件设置正确的值。之后,您可以使用下面的代码来停靠它。

      userControlName ctrl = new userControlName();
      panel1.Controls.Add(ctrl);
      ctrl.Dock = DockStyle.Fill;
      

      或者你可以在面板的 controlAdded 事件中做类似的事情

      foreach (Control ctrl in panel1.Controls)
      {
      ctrl.Dock = DockStyle.Fill;
      }
      

      编辑:现在我可以看到图片了。你需要设置

      文本框向左停靠并调整其大小

      button2 锚点到顶部,右侧

      button1 锚点到右下角

      【讨论】:

        【解决方案4】:

        TableLayoutPanel 可以在这里解决问题。

        在您的UserControl 上,将TableLayoutPanel 作为第一个控件并将其Dock 属性设置为Fill

        TableLayoutPanel 添加一个额外的行,这样您就有了 2 列和 3 行。将Textbox 放入左上列,将Multiline 设置为true,然后将Dock 设置为Fill。找到 RowSpan 属性并将其设置为 3。

        将按钮添加到右侧列,第一行一个,第二行一个。不要在这些上设置Dock 属性。只需设置您需要的任何额外边距。

        最后打开TableLayoutPanel 的列/行编辑窗口并像这样设置列:

        然后像这样设置行:

        按确定退出列/行样式窗口,您的UserControl 现在应该如下所示:

        如果您希望Buttons 之间有更大的间距或TextBox 周围的间隙,请确保在每个控件上设置Margin 属性,直到您拥有所需的布局。

        现在,当您将新的UserControl 放到设计图面上并调整其大小时,您会发现按钮不再被文本框遮挡。

        当然,您可以随意调整列数/行数,直到获得所需的布局。

        我建议在包含控件之前不要将行/列设置为 AutoSize,否则行/列将从设计视图中消失,您必须从 Cell、@987654347 设置行/列@,Column要放置的控件的附加属性。

        【讨论】:

          猜你喜欢
          • 2016-05-12
          • 1970-01-01
          • 2013-04-30
          • 1970-01-01
          • 2012-06-21
          • 1970-01-01
          • 2016-12-19
          • 2013-06-04
          • 2011-12-19
          相关资源
          最近更新 更多