繁体   English   中英

Winforms:带对接的FlowLayoutPanel

[英]Winforms: FlowLayoutPanel with Docking

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

让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;
} 

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

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

FlowLayoutPanel的对接属性适用于面板本身(如果您希望FlowLayoutPanel停靠在窗体的左侧,等等),而不是其中的控件容器。

尝试使用DefaultPadding和DefaultMargin属性,这些属性适用于它包含的控件的间距

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM