C# 面板尺寸不断变小

C# 面板尺寸不断变小,c#,winforms,size,panel,C#,Winforms,Size,Panel,我有许多小组和一个表格。我使用了面板,所以我不必使用多种形式。但它有一个问题。在我将面板大小指定给表单大小并显示表单之后,下次我再次指定它时,令我惊讶的是,面板变得比原来的小。为什么会这样?这就是我的做法 this.Size = panelABC.Size; panelABC.Dock = DockStyle.Fill; panelABC.Visible = true; 由于面板大小相对于控件已更改,因此在您再次调用此代码时,面板已停靠在内部。使用停靠或锚定将在调整父容器大小期间管理面板大小

我有许多小组和一个表格。我使用了面板,所以我不必使用多种形式。但它有一个问题。在我将面板大小指定给表单大小并显示表单之后,下次我再次指定它时,令我惊讶的是,面板变得比原来的小。为什么会这样?这就是我的做法

this.Size = panelABC.Size;
panelABC.Dock = DockStyle.Fill;
panelABC.Visible = true;

由于面板大小相对于控件已更改,因此在您再次调用此代码时,面板已停靠在内部。使用停靠锚定将在调整父容器大小期间管理面板大小


为了答案清晰-实际答案在另一个已发布答案的评论中进行了描述。

我假设有一些填充或其他,这意味着在第一次分配后,需要进行一些调整,以适应事物,这意味着panelABC变小了(因此它将正确地适应)。因此,递归调用使它不断变小


要确认是否是这种情况,请插入一个断点,并在通过时检查您的大小…

这是什么?如果面板所在的是窗体(或父控件),那么这就是您的问题:固定面板会使其略小于父控件。随后对代码的调用会使父级匹配面板的(较小)大小,然后重复该过程…

“这”是表单。那么解决方案是什么呢?回答一个问题-为什么要将表单大小设置为面板大小?你是想达到效果吗?很难提供修复,因为没有人知道您使用此大小代码试图实现什么。因为我有多个面板,显示不同的窗体状态(您可能会说不同的窗口),每个面板的大小都不同。如果您停靠面板,窗体大小应决定面板大小,因此,根据面板调整窗体大小没有什么意义。另外,作为补充说明,您实际上可以将窗体作为子控件添加到其他控件中,但它们不允许是“顶级”窗体。不要再次调用代码,也不要在面板停靠时忽略大小设置。