我创建了一个包含标签和进度条的用户控件。我还创建了另一个用户控件,它只包含一个流向设置为自上而下的流布局面板。当我将前者添加到后者的流布局面板时,我希望它使用可用的最大水平空间量和最小量的垂直空间,以便尊重标签和进度条的默认高度。有没有办法做到这一点?
我上传了一个屏幕截图来帮助说明问题。包含标签和进度条的用户控件为红色,包含流布局面板的用户控件为绿色。
我创建了一个包含标签和进度条的用户控件。我还创建了另一个用户控件,它只包含一个流向设置为自上而下的流布局面板。当我将前者添加到后者的流布局面板时,我希望它使用可用的最大水平空间量和最小量的垂直空间,以便尊重标签和进度条的默认高度。有没有办法做到这一点?
我上传了一个屏幕截图来帮助说明问题。包含标签和进度条的用户控件为红色,包含流布局面板的用户控件为绿色。
我认为问题在于您实际上并不希望控件“流动”,您只希望它们消耗主机控件中的最高位置。您只需使用常规面板控件即可获得所需的结果。只需将子用户控件添加到容器控件的控件集合中,然后将添加的用户控件的 Dock 设置为“顶部”。
ChildDisplay dsp1 = new ChildDisplay();
pnlHost.Controls.Add(dsp1);
dsp1.Dock = DockStyle.Top;
ChildDisplay dsp2 = new ChildDisplay();
pnlHost.Controls.Add(dsp2);
dsp2.Dock = DockStyle.Top;
ChildDisplay dsp3 = new ChildDisplay();
pnlHost.Controls.Add(dsp3);
dsp3.Dock = DockStyle.Top;
注意:将 [ChildDisplay] 替换为您正在使用的 UserControl 的名称。
只需将用户控件的 Dock 属性设置为“顶部”...
UserControl.Dock = System.Windows.Forms.DockStyle.Top;
控件的定位和分层有时可能很棘手。确保绿色流控件的 Dock 属性设置为 Fill。之后,开始放置标签控件并开始定位。如果需要,您可以将 Dock 属性设置为 Top,但在大多数情况下,我不喜欢它。我想说在设置控件位置时要记住的最重要的事情之一,尤其是在使用 Dock 属性时,就是顺序很重要。如果您看不到某个控件(即……它似乎隐藏在其他控件后面),请尝试重新排序它们添加到父控件的方式(在本例中为流控制面板)。如果您在 VS 中使用设计器,您可以通过右键单击并使用“发送到顶部/底部”命令来执行此操作(在使用 Dock 属性时非常有用,
此外,在我看来,一个经常被忽视的选项是正确使用Control.Anchor。我建议看看它。