Уменьшение пространства между элементами управления в FlowLayoutPanel

Как я могу уменьшить пространство между элементами управления еще дальше? Я установил все поля и отступы в 0, но между моими контроллерами все еще есть пространство.

flow layout properties

это место я получаю все поля и отступы равны 0. Я даже установил маржу и заполнение на каждом контроллере в 0.

new spacing

и для согласованности вот код, который добавляет PictureBoxes

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)

2 ответов


вы не устанавливаете свойство Margin в добавляемых полях изображений. Значение по умолчанию-3,3,3,3. Добавьте эту строку кода, чтобы устранить проблему:

  newPic.Margin = New Padding(0)

каждый элемент управления обрабатывает поля по-разному, даже со стандартными элементами управления. Посмотрите на этот пример:

enter image description here

обратите внимание, что a Button оставляет некоторое пространство вокруг него, в то время как текстовое поле занимает все. Вы можете спросить, почему между ними 2 пикселя, которые вы можете четко видеть. Для этого-скопируйте / вставьте в Paint и увеличьте масштаб. Эти 2 пикселя по сути границы, это как элемент управления. Я уверен Buttons также есть граница, но это сложнее оправдать визуально, даже при увеличении.

Если вы хотите изменить это, вам нужно будет создать пользовательский элемент управления и переопределить способ его рисования, т. е. вручную вырезать границы из него или аналогично. Но я бы не рекомендовал делать это, чтобы сохранить UI последовательным.