Winforms 嵌套的flowlayout面板未换行
我有一个具有以下属性的FlowLayoutPanel:Winforms 嵌套的flowlayout面板未换行,winforms,flowlayoutpanel,Winforms,Flowlayoutpanel,我有一个具有以下属性的FlowLayoutPanel: Dock=Fill(在用户控件中) 流向=自上而下 WrapContents=false 我这样做是为了使添加到面板的每个项目都添加到底部 我添加到此面板中的项是用户控件,它们本身具有FlowLayoutPanels,但它们具有标准行为(LeftToRight,WrapContents=true)。我遇到的问题是,内部用户控件的FlowLayoutPanel没有调整大小以填充外部控件,但是当我在这些控件上将AutoSize设置为true
- Dock=Fill(在用户控件中)
- 流向=自上而下
- WrapContents=false
我不认为您可以将控件停靠在FlowLayoutPanel中,除非您将LayoutEngine子类化,并使用自定义引擎创建自己版本的窗格。然而,这个问题有一个很棒的解决方案。使用TableLayoutPanel!由于您只需要一列,因此使用TableLayoutPanel进行此操作非常简单 唯一需要注意的是,TLP最初需要有0行,然后以编程方式添加用户控件。诀窍是将用户控件停靠到顶部。这项工作:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
TableLayoutPanel tlp1 = new TableLayoutPanel();
this.Controls.Add(tlp1);
tlp1.Dock = DockStyle.Fill;
for (int i = 0; i < 5; i++)
{
UserControl1 uc = new UserControl1();
uc.Dock = DockStyle.Top;
tlp1.Controls.Add(uc);
}
}
}
公共部分类表单1:表单
{
公共表格1()
{
初始化组件();
TableLayoutPanel tlp1=新的TableLayoutPanel();
this.Controls.Add(tlp1);
tlp1.Dock=DockStyle.Fill;
对于(int i=0;i<5;i++)
{
UserControl1 uc=新的UserControl1();
uc.Dock=DockStyle.Top;
tlp1.控件.添加(uc);
}
}
}
在本例中,UserControl1是一个用户控件,上面有一个FLP,其中有一系列按钮,因此我可以确认停靠和流动是否有效