减少 FlowLayoutPanel 中控件之间的空间

Posted

技术标签:

【中文标题】减少 FlowLayoutPanel 中控件之间的空间【英文标题】:Decrease space between controls in FlowLayoutPanel 【发布时间】:2012-10-22 10:14:09 【问题描述】:

如何进一步缩小控件之间的间距? 我已将所有边距和填充设置为 0,但我的控制器之间仍有空间。

这是我得到的空间,所有边距和填充设置为 0。我什至将每个控制器上的边距和填充设置为 0。

为了保持一致性,这里是添加图片框的代码

Dim newPic As PictureBox = New PictureBox()
newPic.Image = p.Image
newPic.Size = New System.Drawing.Size(New Point(p.Size.Width * 2, 
                                                p.Size.Height * 2))
newPic.SizeMode = p.SizeMode
laytt.SetToolTip(newPic, ttstring)
AddHandler newPic.Click, AddressOf LayoutComponent_Clicked 

LayoutFlowLayout.Controls.Add(newPic)

【问题讨论】:

将每个包含的控件的所有边距都设置为0还不够吗? 我刚试过,它确实减少了空间,但它们之间仍然有一个空间(2像素?) 添加了显示间距的新图片 我仍然很难猜出您使用的是哪个控件,以及您的最终目标是什么,但请看我的回答 - 希望它能解决问题。 【参考方案1】:

您没有在添加的图片框上设置 Margin 属性。默认值为 3,3,3,3。添加这行代码来解决问题:

  newPic.Margin = New Padding(0)

【讨论】:

【参考方案2】:

每个控件处理边距的方式都不同,即使使用标准控件也是如此。看看这个例子:

请注意,Button 在其周围保留了一些空间,而 TextBox 占据了所有内容。您可能会问为什么它们之间有 2 个像素,您可以清楚地看到。为此 - 请复制/粘贴到 Paint 并放大。这 2 个像素实际上是边框,这就是绘制控件的方式。我确信Buttons 也有边框,但即使放大也很难在视觉上证明是正确的。

如果你想改变它,你需要创建一个自定义控件并覆盖它的绘制方式,即手动从它上剪下边框或类似的东西。但我不建议这样做,以保持 UI 一致。

【讨论】:

以上是关于减少 FlowLayoutPanel 中控件之间的空间的主要内容,如果未能解决你的问题,请参考以下文章

C#删除flowLayoutPanel中的动态创建控件

在常规面板中重新排序控件

C# 中窗体的 Control 属性中的控件顺序

在 C# 中使用不同的父控件对 Windows 窗体单选按钮进行分组

C#winform 怎么设置自动竖直滚动条

C# 使用代理实现线程间调用