Как правильно изменить размеры ListBox в SplitContainers? - PullRequest
0 голосов
/ 27 июня 2018

Чтобы воспроизвести эту проблему,

  • Создание нового проекта WinForms
  • Используя конструктор WinForms, добавьте SplitContainer
    • Установить горизонтальную ориентацию
    • Установите его док для заполнения
  • В каждый из контейнеров SplitContainer добавьте ListBox
    • Установите его док для заполнения
    • Увеличьте размер шрифта, чтобы более отчетливо наблюдать рассматриваемое поведение
    • Добавьте несколько элементов в списки

После этих шагов дизайнер должен выглядеть так:

enter image description here

  • Теперь запустите программу
  • Изменить размер контейнеров в SplitContainer

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

enter image description here

Для других размеров верхнего контейнера места практически нет.

Я предположил, что это потому, что в списках не может отображаться «половина элемента», поэтому он уменьшает свой размер, чтобы не отображать эту половину элемента. Это правда?

Я подумал о следующем решении:

Ограничение изменения размера разделенного контейнера, чтобы пользователь мог изменять размер только в «шагах», где каждый шаг равен высоте одного элемента в списке.

Однако мне это не совсем нравится, потому что, когда высота предмета велика, опыт пользователя кажется неестественным (по крайней мере, мне).

Как сделать так, чтобы размеры списков корректно изменялись (т.е. не оставляли пробелов)?

1 Ответ

0 голосов
/ 27 июня 2018

Для достижения желаемого эффекта вы можете установить для свойства IntegralHeight значение false.

https://msdn.microsoft.com/en-us/library/system.windows.forms.listbox.integralheight(v=vs.110).aspx

Получает или задает значение, указывающее, следует ли изменять размер элемента управления, чтобы избежать отображения частичных элементов.

...