【问题标题】:How do I dock a UserControl into a FlowLayoutPanel?如何将 UserControl 停靠到 FlowLayoutPanel 中?
【发布时间】:2011-10-24 19:08:33
【问题描述】:

我有一个 FlowLayoutPanel 和一个 UserControl。

我在FlowLayoutPanel 中添加了多个用户控件,并且我试图将它们停靠在顶部,因此当我更改FlowLayoutPanel 的大小时,用户控件的大小(宽度)会相应地发生变化。

【问题讨论】:

    标签: user-controls dock docking flowlayoutpanel


    【解决方案1】:

    您不能将任何东西停靠在 FlowLayoutPanel 中,它会被忽略。

    查看显然是由 Microsoft 团队发布的 answer here

    他们说:

    FlowLayoutPanel 依靠最大的控件来有效地定义其中的列/行。下面的代码将第一个控件的大小设置为 FLP 的宽度,以实现类似于您想要的布局。

        private void flowLayoutPanel1_Layout(object sender, LayoutEventArgs e)
        {
            flowLayoutPanel1.Controls[0].Dock = DockStyle.None;
            for (int i = 1; i < flowLayoutPanel1.Controls.Count; i++)
            {
                flowLayoutPanel1.Controls[i].Dock = DockStyle.Top;
            }
            flowLayoutPanel1.Controls[0].Width = flowLayoutPanel1.DisplayRectangle.Width - flowLayoutPanel1.Controls[0].Margin.Horizontal;
    
        }
    

    关键是使用Layout 事件。

    这个解决方案在一定程度上对我有用。您的 UserControls 必须关闭 AutoSize / 保持统一大小。

    在我的例子中,我希望 AutoSize 打开,以便在填充 FlowLayoutPanel 的宽度时允许 UserControl 垂直扩展/收缩。

    我必须找到不同的解决方案。但以上内容可能会对您有所帮助。

    【讨论】:

    • 谢谢兄弟 ^_^ iv 设法通过在 FlowLayoutPanel 的大小发生变化时更改控件的大小来模拟 :) 我知道这可能不是最好的解决方案,但它确实做到了工作:D
    猜你喜欢
    • 2011-11-18
    • 1970-01-01
    • 2011-09-20
    • 1970-01-01
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    • 2017-01-23
    • 2019-08-03
    相关资源
    最近更新 更多