C# Winforms:在窗体控件中调整用户控件的大小

C# Winforms:在窗体控件中调整用户控件的大小,c#,.net,winforms,C#,.net,Winforms,背景: 我正在尝试使用创建一个表单 我有两个被注入表单的用户控件。 表单包含两个面板,它们表示将容纳用户控件的容器 用户控件在运行时通过DI进行注入(我使用的是MVP模式,它类似于MVVM,但针对Winforms进行了调整) 表单具有默认的最小大小,但未指定最大大小。调整窗体大小的唯一方法是使其全屏显示。它的AutoSize属性设置为TRUE,AutoSizeMode设置为GrowthandShrink 两个用户控件都将“自动大小”设置为TRUE。 用户控件内的所有容器都将AutoSize属性设

背景:

我正在尝试使用创建一个表单

我有两个被注入表单的用户控件。 表单包含两个面板,它们表示将容纳用户控件的容器

用户控件在运行时通过DI进行注入(我使用的是MVP模式,它类似于MVVM,但针对Winforms进行了调整)

表单具有默认的最小大小,但未指定最大大小。调整窗体大小的唯一方法是使其全屏显示。它的AutoSize属性设置为TRUE,AutoSizeMode设置为GrowthandShrink

两个用户控件都将“自动大小”设置为TRUE。 用户控件内的所有容器都将AutoSize属性设置为TRUE,将DOCK设置为FILL,并将AutoSizeMode=growtandshrink。未设置控件的最大大小

表单中的面板一个接一个地堆叠,并将“锚定”特性分别设置为:顶部、左侧、右侧:底部、左侧、右侧

问题:

当将表单调整为全屏时,我希望用户控件能够扩展以填充整个屏幕

这并没有发生

用户控件的大小没有变化,我也找不出原因

谢谢

更新

如果我分别将窗体内面板的DOCK属性更改为TOP
填充时,面板将调整大小,但面板内的用户控件保持不变

将面板中控件的
Dock
也设置为
Fill

忘记在控件上设置Dock和AutoSizeMode只需使用锚定,您会发现它工作得很好

我从不使用
AutoSize=true
。我总是把它放在
false
(事实上,我必须检查一些表单,以验证
AutoSize
AutoSizeMode
属性甚至存在于表单上的控件上)


在您描述的场景中,我会将面板和其中包含的控件的锚定设置为上、左、下、右。

您给出了一系列相互冲突的布局方向,锚定大小、停靠大小、自动缩放大小,实际应该发生什么?如果这些UCs需要按比例缩放,那么使用停靠的TableLayoutPanel填充。我提到了所有布局设置,因为这样有人可以指出一些明显的错误。最终目标是能够在运行时动态地将两个自定义控件注入到一个表单中,并适当地重新调整大小。任何有效的,不需要额外代码的都是受欢迎的。将锚定设置为顶部、左侧、底部、右侧的poth面板将重叠面板。如果我将第一个设置为TOP、LEFT、RIGHT,第二个设置为BOTTOM、LEFT、RIGHT,则不会相应调整大小。设置控件的所有锚点都不起作用,但是,正如@Schlinger所建议的那样,将停靠设置为填充解决了我的部分问题,即用户控件正在像应该的那样填充表单,但其中的控件没有调整大小。也许这与我使用FlowLayout作为用户控件的主容器有关?它确实重新调整了表单中添加的用户控件的大小,但是用户控件的内容没有缩放。我使用FlowLayout作为自定义控件中使用的所有用户控件的容器。有什么建议吗?感谢设置控件的锚属性,这些属性应在usercontrol上调整大小。示例:当您将窗体向右展开时,文本框应向右移动时,请设置顶部的定位,左侧和右侧尝试为面板设置建议的定位。不起作用。可能是因为它在FlowLayout控件中,我使用flow break属性?我不希望其他用户控件与面板位于同一行。您必须在控件上设置锚,如文本框、按钮、标签等。。下面是UI的外观。在左边,您可以看到用户控件是由什么组成的。编号的控件都将Anchror属性设置为TOP、LEFT和RIGTH。除控制7外,所有这些都按预期工作。当我将控件7(在设计器中)向右拉时,我希望控件3和1向右移动,但事实并非如此。如果我尝试拉动控制按钮4,控制按钮7将跟随。我做了同样的设置,它应该可以工作。唯一不同的是,我在普通面板上使用了flowLayout面板。