Как я могу сделать свой проверяемый список вертикально прокручиваемым, если для MultiColumn установлено значение true? - PullRequest
1 голос
/ 02 февраля 2009

У меня есть Checkedlistbox, который имеет 3 строки в высоту и достаточно большой, чтобы отображать около 5 элементов.

Пока у меня меньше 15 элементов, все работает нормально. Однако, если я добавлю шестнадцатый элемент, в поле selectedlist отобразится горизонтальная полоса прокрутки, которая занимает 2 строки элементов, что означает, что все элементы теперь находятся только в одной строке.

Хуже того, если я уберу лишний элемент, горизонтальная полоса прокрутки останется на месте.

Я пытался использовать:

mycheckedlistbox.HorizontalScrollbar = false;
mycheckedlistbox.ScrollAlwaysVisible = false;

но это, похоже, не имеет никакого эффекта.

Я использую режим multicolumn = true, который, кажется, вызывает это неправильное поведение

Есть ли способ предотвратить отображение горизонтальной полосы прокрутки в элементе управления и использовать вместо нее вертикальную полосу прокрутки?

Я нашел кого-то с похожим вопросом на форумах MSDN , но, похоже, он не получил ответа.

Ответы [ 2 ]

1 голос
/ 02 февраля 2009

Ну, судя по тамошним ответам и нескольким тестам, которые я проводил, это кажется невозможным, но в то же время, я думаю, вы пытаетесь победить цель. Если бы я был на твоем месте, я бы использовал DataGridView без линий сетки, который нельзя редактировать. У вас гораздо больше контроля над тем, что происходит в сетке, и вы можете настроить его НАМНОГО больше, чем CheckedListBox. Вы можете получить тот же эффект, что и DataGridViewCheckBoxColumns.

(Если вам нужен пример кода, опубликуйте его в комментариях, и я быстро приведу пример.)

1 голос
/ 02 февраля 2009

Полоса прокрутки делает макет элементов бистабильным. Вы можете заставить полосу прокрутки исчезнуть, ударив ее по голове:

  checkedListBox1.MultiColumn = false;
  checkedListBox1.MultiColumn = true;

Это заставляет WF воссоздать ручку управления, мерцание может быть едва заметным. Да, вертикальная полоса прокрутки возможна, но вам придется отказаться от MultiColumn.

...