Любой способ ограничить ListBox (или альтернативу) для выбора последовательных элементов? - PullRequest
1 голос
/ 10 июня 2011

Есть ли какой-нибудь хороший способ настроить ListBox (WinForms), чтобы можно было выбирать несколько элементов щелчком + перетаскиванием или Shift + щелчок, но чтобы можно было выбирать только последовательный диапазон элементов?По сути, я бы хотел, чтобы поведение выбора ListBox было (с точки зрения пользователя) скорее похожим на поведение TextBox, но с ограничением, что можно выбирать только целые строки.

Прямо сейчас я 'Я использую UserDrawVariable ListBox в качестве журнала событий, но поведение прокрутки в UserDrawVariable Listbox несколько сомнительно.Я хотел бы изменить его на UserDrawFixed ListBox, используя несколько элементов для вещей, которые должны быть выше (иметь тип «ItemExtension» для более поздних элементов, которые будут содержать ссылку на первый элемент, который будет представлять свою процедуру рисования дляих).Единственный способ, которым я могу придумать, чтобы поведение выбора работало разумно, - это отслеживать начало и конец диапазона выбора и рисовать как выделенные элементы, которые хотя бы частично выбраны.Использование отдельных флагов выбора элемента может показаться неуместным, если пользователь щелкает верхнюю половину «элемента», состоящего из двух частей, а затем нажимает контрольную кнопку в нижней половине;нажатие на любую половину должно выделить элемент, а щелчок управления должен отключить его, но, поскольку щелчки будут регистрироваться по отдельным элементам, я не думаю, что это произойдет.

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

1 Ответ

0 голосов
/ 01 августа 2011

Предложение 1) Нажмите Ctrl + Click на элементе управления и разрешите его только в том случае, если a) нет выбора или b) выбранный элемент находится рядом с текущим выбором.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...