2009-08-15 1 views
0

Ухх, я провел последние пару часов на этом сейчас. Я обычно заканчиваю тем, что нашел ответ от бит Гуглинга, но не с этим. Немного головной боли.Перехват combobox dropdown

Мои вопросы:

  1. Как я могу поймать, когда пользователь нажимает на стрелку на выпадающий список и предотвратить выпадающий список не отображалась.

  2. Как я могу очистить и заполнить выпадающий список и отобразить его программно?

У меня есть одна программа-агент, удаленно подключенная к серверу через Интернет. Когда вы нажимаете стрелку раскрывающегося списка на агенте, он запрашивает сервер, чтобы определить, что должно быть в раскрывающемся списке. Затем отображается раскрывающийся список. Сопотоки действуют как фильтры для последующих combobox в GUI. Задержка отображения выпадающего списка вполне приемлема при извлечении данных. Первоначально запрос всех возможных записей в раскрывающемся списке не является вариантом, потому что их так много! Нужно быть сопоставимыми по сравнению со списками, так как пользователь может также ввести запись, которой нет в списке.

Надеюсь, это будет разъяснено, что я делаю:

GUI на агенте:

ComboBox1 - отображает страны

ComboBox2 - отображает города - выпадающий список определяется ComboBox1 выбранного пункта

ComboBox3 - отображает города - выпадающий список, определенный ComboBox2, выбранным пунктом

ComboBox4 - отображает улицы - выпадающий список определяется ComboBox3 выбранного элемента

ответ

1

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

Предполагая, что вы используете Windows Forms здесь обработчик для первого комбинированного окна:

Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged 
    ComboBox2.Enabled = True 
    ' Fill ComboBox2 based on ComboBox1.SelectedItem 
    ComboBox2.Items.Clear() 
    ComboBox2.Items.Add("Foo") 
    ComboBox2.Items.Add("Bar") 
End Sub 

Обратите внимание, что ComboBox2 в ComboBox4 отключены intially и только активируются, когда они заполнены данными.

+1

Я изначально прочитал, что думал, да, это слишком просто, я уже пробовал, это не сработает. Но, думая об этом, на самом деле это идеальное решение, о котором я действительно должен был подумать. Иногда все, что нужно - это свежая пара глаз (и кто-то, кто знает, о чем они говорят!) Все работает отлично, спасибо за быстрый и полезный ответ. – Kez

+1

Я бы добавил «ComboBox2.Items.Clear();» перед добавлением Foo и Bar здесь. – MusiGenesis

+1

@MusiGenesis: Вы правы, и у меня есть мой ответ. –

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

  • Нет связанных вопросов^_^