2

我创建了一个包含标签和进度条的用户控件。我还创建了另一个用户控件,它只包含一个流向设置为自上而下的流布局面板。当我将前者添加到后者的流布局面板时,我希望它使用可用的最大水平空间量和最小量的垂直空间,以便尊重标签和进度条的默认高度。有没有办法做到这一点?

我上传了一个屏幕截图来帮助说明问题。包含标签和进度条的用户控件为红色,包含流布局面板的用户控件为绿色。

4

3 回答 3

5

我认为问题在于您实际上并不希望控件“流动”,您只希望它们消耗主机控件中的最高位置。您只需使用常规面板控件即可获得所需的结果。只需将子用户控件添加到容器控件的控件集合中,然后将添加的用户控件的 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 的名称。

于 2009-07-01T02:08:28.730 回答
2

只需将用户控件的 Dock 属性设置为“顶部”...

UserControl.Dock = System.Windows.Forms.DockStyle.Top;
于 2009-06-17T13:36:54.093 回答
1

控件的定位和分层有时可能很棘手。确保绿色流控件的 Dock 属性设置为 Fill。之后,开始放置标签控件并开始定位。如果需要,您可以将 Dock 属性设置为 Top,但在大多数情况下,我不喜欢它。我想说在设置控件位置时要记住的最重要的事情之一,尤其是在使用 Dock 属性时,就是顺序很重要。如果您看不到某个控件(即……它似乎隐藏在其他控件后面),请尝试重新排序它们添加到父控件的方式(在本例中为流控制面板)。如果您在 VS 中使用设计器,您可以通过右键单击并使用“发送到顶部/底部”命令来执行此操作(在使用 Dock 属性时非常有用,

此外,在我看来,一个经常被忽视的选项是正确使用Control.Anchor。我建议看看它。

于 2009-06-17T14:33:30.717 回答