Winforms:带对接的FlowLayoutPanel

Ale*_*lex 4 c# dock flowlayoutpanel winforms

这是winforms.我正在创建一个用户控件,它基本上是一个充满其他用户控件的FlowlayoutControl.我需要添加的每个控件都停靠在前一个控件的顶部(从左到右).不幸的是,看起来flowlayoutcontrol忽略了任何对接属性.有没有办法将控制器停靠在那里?我需要它从左到右填充项目,但项目应该像列表视图一样布局.真的没有我可以提供的代码,因为它是一个确定采取什么方法的事实.

Dus*_*inA 11

让FlowLayoutPanel正确停靠是很棘手的.从原始问题来看,您需要类似列表视图的内容.重要的是要知道列表中的一个项目(最宽的一个)在FlowLayoutPanel中定义了一个"虚拟列".其余的项目将遵循它.您可以通过向右拖动其中一个项目来在VS设计器中证明这一点."虚拟列"将跟随它,如果您的其他项目已锚定,则它们将跟随虚拟列.

请注意,您无法锚定定义列的控件.没有什么可以锚定的,奇怪的事情会发生.

以编程方式执行所有操作,在FlowLayoutPanel上处理Layout事件并将代码放在类似下面的代码中.重要的是,在设计器中,列表中的所有项目都不会停靠,并将其锚定设置为"无".我昨天在这上面花了一天时间,在设计师那里做的就是让下面的代码工作的原因.

flowLayoutPanel.Controls[0].Dock = DockStyle.None;                
flowLayoutPanel.Controls[0].Width = flowLayoutPanel.DisplayRectangle.Width - lowLayoutPanel.Controls[0].Margin.Horizontal;

for (int i = 1; i < flowLayoutPanel.Controls.Count; i++)
{
    flowLayoutPanel.Controls[i].Dock = DockStyle.Top;
} 
Run Code Online (Sandbox Code Playgroud)


Akr*_*hda 6

FlowLayoutPanel.FlowDirection 属性指示 FlowLayoutPanel 控件的流向。

FlowLayoutPanel.WrapContents 属性指示 FlowLayoutPanel 控件是应该包装其内容还是让内容被剪切。