如何调整UserControl的大小以适合Windows窗体的容器?

时间:2018-09-28 03:25:17

标签: c# winforms windows-forms-designer

我正在尝试使用户控件以另一种形式适合面板。我尝试了停靠和自动调整大小,但似乎无济于事。

Main Form

我正在尝试使其适合上面的面板,但是隐藏了按钮。如何调整它的大小,使其可以缩放到面板大小?

UserControl.cs

4 个答案:

答案 0 :(得分:1)

使用SplitContainer控件而不是面板,它将解决您的问题。

enter image description here

答案 1 :(得分:1)

您可以使用面板的Anchor属性,将其设置为“全部”或“底部,顶部,左侧,右侧”。它将与容器边界保持相同的间距,即,如果将容器缩小,它将变得更小,反之亦然。

答案 2 :(得分:1)

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

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 锚定到底部,右侧

答案 3 :(得分:0)

TableLayoutPanel可以解决问题。

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

TableLayoutPanel上增加一行,这样您就有2列和3行。将Textbox放在左上角,将Multiline设置为true,然后将Dock设置为Fill。找到RowSpan属性并将其设置为3。

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

最后打开TableLayoutPanel的“列/行”编辑窗口,并按如下所示设置“列”:

Column settings

然后像这样设置行:

Row settings

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

Final layout

是否要在Buttons之间留出更多间距或在TextBox周围留出空隙,请确保在每个控件上设置Margin属性,直到获得所需的布局

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

当然,您可以按照自己喜欢的方式处理列数/行数,直到获得所需的布局为止。

我建议不要将行/列设置为AutoSize,直到它们包含控件,否则行/列将从设计视图中消失,而您必须从{{1}中设置行/列},CellRow附加了您要放置的控件的属性。