2013-10-09 2 views
0

В настоящее время я пытаюсь применить фильтр к wxCheckListBox (для поиска определенных элементов). До сих пор я понятия не имею, как это сделать. Проблема заключается в том, что я не хочу иметь копию элемента управления и всегда удалять ненужные элементы из копии, и как только поиск изменится, его нужно скопировать из оригинала и снова удалить элементы , Мне было интересно, есть ли способ просто скрыть некоторые предметы, а не весь контроль.wxCheckListBox Функция фильтрации

ответ

1

Вы не можете скрыть пункты в столбцах wxListBox или wxCheckListBox. Чтобы иметь такой динамический контроль над элементами, появляющимися в элементе управления, вам необходимо использовать wxListCtrl в виртуальном режиме.

Однако обычно нет проблем с удалением некоторых элементов из wxListBox, а затем вставлять их обратно (или, что еще проще, хранить все элементы, удалять некоторые из них из элемента управления, а затем, чтобы вернуть, очистить элемент управления и восстановить все первоначально сохраненные элементы).

+0

Это действительно так, но я беспокоюсь о производительности (элемент управления будет содержать около ~ 7000 элементов). –

+1

Не используйте 'wxListBox' для этого большого количества элементов, используйте' wxListCtrl' в виртуальном режиме или 'wxDataViewCtrl' вместо которые позволяют вам возвращать только нужные предметы (то есть в настоящее время показаны на экране) по запросу. –

+0

Действительный пункт. Правильно ли я полагаю, что даже с двумя разными элементами управления мне все еще нужно использовать идею удаления элементов, которые не должны быть видимы? После изучения документации wxwidgets я не нашел другого пути. Это верно? –

Смежные вопросы