WinForms. Ширина ListBox

Хочу в окошке создать ListBox, но есть проблемы с размерами. Мне нужно, чтобы ListBox занимал всю ширину окошка, а по краям был маленький отступ (например, 5 пикселей).

Сейчас это выглядит вот так:

введите сюда описание изображения

А должно быть так:

введите сюда описание изображения

Не могу понять, почему сейчас ширина ListBox'а больше чем ширина окна

var tv = new ListBox();
tv.Location = new System.Drawing.Point(5, 5);
tv.Width = 290;

tv.Items.Add("Window width: " + Width);
tv.Items.Add("LB width: " + tv.Width);

Controls.Add(tv);

Ответы (1 шт):

Автор решения: Alexander Petrov

Можно задать padding родительскому контролу, на который помещён листбокс:

this.Padding = new Padding(5);

var listBox = new ListBox
{
    Parent = this,
    Dock = DockStyle.Top,
    Height = 150
};

Если наличие паддинга будет мешать размещению других контролов, то листбокс следует поместить на панель с паддингом, а саму панель на родительский контрол без паддинга.


Класс SystemInformation содержит информацию о размерах бордюров, рамок и т. п. Их всегда нужно учитывать при ручном задании размеров контролов. Но лучше использовать автоматический layout: задавать padding и margin, использовать TableLayoutPanel, FlowLayoutPanel и тому подобные возможности.

Position and layout of controls
Layout in Windows Forms Controls

→ Ссылка