Чтобы воспроизвести эту проблему,
- Создание нового проекта WinForms
- Используя конструктор WinForms, добавьте
SplitContainer
- Установить горизонтальную ориентацию
- Установите его док для заполнения
- В каждый из контейнеров
SplitContainer
добавьте ListBox
- Установите его док для заполнения
- Увеличьте размер шрифта, чтобы более отчетливо наблюдать рассматриваемое поведение
- Добавьте несколько элементов в списки
После этих шагов дизайнер должен выглядеть так:
- Теперь запустите программу
- Изменить размер контейнеров в
SplitContainer
Вы должны увидеть, что при некоторых размерах верхнего контейнера между двумя полями списка будет пробел (извините за плохое написание мышью).
Для других размеров верхнего контейнера места практически нет.
Я предположил, что это потому, что в списках не может отображаться «половина элемента», поэтому он уменьшает свой размер, чтобы не отображать эту половину элемента. Это правда?
Я подумал о следующем решении:
Ограничение изменения размера разделенного контейнера, чтобы пользователь мог изменять размер только в «шагах», где каждый шаг равен высоте одного элемента в списке.
Однако мне это не совсем нравится, потому что, когда высота предмета велика, опыт пользователя кажется неестественным (по крайней мере, мне).
Как сделать так, чтобы размеры списков корректно изменялись (т.е. не оставляли пробелов)?