powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / вопрос по ListBox-у с MultiSelect-ом и его событиям
7 сообщений из 7, страница 1 из 1
вопрос по ListBox-у с MultiSelect-ом и его событиям
    #39088399
Неофит81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На форме есть два списка со множественным выбором. Требуется, чтобы при выборе одного или нескольких значений в первом списке выбранные значения отображались бы во втором списке. Всё относительно неплохо работает через событие AfterUpdate первого списка при выборе значений из списка мышью (используется ItemsSelected в цикле). Если же выбирать значения с помощью клавиатуры стрелками - всё не работает должным образом. Это происходит из-за того, что выделение значений списка происходит после события AfterUpdate списка и в коллекции ItemsSelected новые значения просто не успевают появиться!

Каким образом можно обойти данную проблему?
Я реализовал через дополнительную кнопку, при щелчке по которой происходит заполнение и отображения второго списка. Но это какие-то костыли. Наверняка есть более элегантное решение.

В прикрепленном файл примера.
...
Рейтинг: 0 / 0
вопрос по ListBox-у с MultiSelect-ом и его событиям
    #39088413
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Замените связный выбор на Простой.
...
Рейтинг: 0 / 0
вопрос по ListBox-у с MultiSelect-ом и его событиям
    #39088438
Неофит81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне нужен связный выбор для использования клавиатуры. В моем приложении в данном случае было бы удобнее работать без мыши. Но я подумаю над этим, если не будет более толкового решения.
...
Рейтинг: 0 / 0
вопрос по ListBox-у с MultiSelect-ом и его событиям
    #39088458
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Режим Простой дает удобный функционал для работы с клавиатурой. Передвижение навигационными стрелками, выбор/отказаться пробелом.
...
Рейтинг: 0 / 0
вопрос по ListBox-у с MultiSelect-ом и его событиям
    #39088583
Agapov_stas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неофит81 , попробуйте добавить на событие KeyUp Me.Repaint:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Private Sub lst1_KeyUp(KeyCode As Integer, Shift As Integer)
    Dim varItm As Variant 'переменная для хранения значения списка с мультиселектом
    Dim str As String 'значения списка с мультиселектом
    Me.Repaint
    For Each varItm In Me.lst1.ItemsSelected
        str = str & Me.lst1.ItemData(varItm) & ";"
    Next varItm
    
    Debug.Print str
    Me.lst2.RowSource = str
End Sub
...
Рейтинг: 0 / 0
вопрос по ListBox-у с MultiSelect-ом и его событиям
    #39088709
lord_de_tempest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да просто из lst1_KeyUp вызвать lst1_AfterUpdate.
...
Рейтинг: 0 / 0
вопрос по ListBox-у с MultiSelect-ом и его событиям
    #39088898
Неофит81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем большое спасибо за ответы - проблема решена.

2mds_world: буду использовать Простой выбор, так как изначально забыл про выделение пробелом, а после тестирования вариантов с Простым выбором и Связным выбором (работающим адекватно) удобнее оказался Простой.

2Agapov_stas: действительно, отлично работает. Даже без Me.Repaint. Просто нужно сделать одинаковые процедуры в AfterUpdate и KeyUp.

2lord_de_tempest: да, самый простой способ.

В итоге выбрал Простой выбор, так как только с ним получилось выбрать "один", "два" и "четыре" без привлечения мыши.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / вопрос по ListBox-у с MultiSelect-ом и его событиям
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]