我有一个FlowLayoutPanel和一个UserControl。
我已经在FlowLayoutPanel
中添加了多个用户控件,我试图将它们停靠在顶部,所以当我更改FlowLayoutPanel
的大小(用户控件的大小(宽度)时相应地改变。
答案 0 :(得分:3)
你不能在FlowLayoutPanel中停靠任何东西,它只是被忽略了。
查看微软团队发布的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
事件。
这个解决方案对我有用。您的UserControl必须关闭AutoSize
/保持统一的大小。
在我的情况下,我希望AutoSize
打开,以便允许UserControl在填充FlowLayoutPanel的宽度时垂直扩展/收缩。
我必须找到一个不同的解决方案。但上述情况可能对您有所帮助。