Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
2 / 2 / 0
Регистрация: 21.11.2015
Сообщений: 75

Как заставить combobox.DroppedDown не выбирать значение?

01.03.2016, 21:46. Показов 3441. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, у меня есть алгоритм поиска в комбобоксе по вложению. (подсказали на вашем форуме)

Но при первом цикле работы обработчика события, сразу в момент выполнения DroppedDown в комбобокс подставляет первое найденное значение.
Например, только я вписал "к" и он тут же подставил "кжд" в поле комбика.

Затем, если я сотру бэкспейсом эти "КЖД" и снова введу "к" то отрабатывает отлично - т.е. вываливает список с подходящими значениями (теми, в которые входит буква "к"). В чем причина такой работы алгоритма понять не могу.

Всю голову сломал. Помогите пожалуйста.
Как заставить свойство DroppedDown не выбирать значение?

Вот полный код алгоритма, если необходимо. Благодарю!
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 public partial class Form5SQLQuery : Form
    {
        BindingSource bs;
         private void Form5SQLQuery_Load(object sender, EventArgs e)
         {
                string fillOrg = "Select Название from Организации";
                DataTable table = new DataTable();
                SqlDataAdapter da = new SqlDataAdapter(fillOrg, cn);
                da.Fill(table);
                bs = new BindingSource();
                bs.DataSource = table;
                comboBox1.DataSource = table;
                comboBox1.DisplayMember = "Название";
           }
 
 private void comboBox1_TextUpdate(object sender, EventArgs e)
        {
          //  comboBox1.SelectionLength = 0;
            comboBox1.DroppedDown = true;
            Cursor.Current = Cursors.Default;
            try
            {
                string filter = comboBox1.Text;
                bs.Filter = "Название LIKE '%" + filter + "%'";
                
                comboBox1.Text = filter;                
                comboBox1.Select(filter.Length, 0);
            }
            catch
            {
                bs.Filter = string.Empty;
            }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.03.2016, 21:46
Ответы с готовыми решениями:

Свойство DroppedDown для DateTimePicker и ComboBox
Открыть программно список выбора для ComboBox можно так: ComboBox1->DroppedDown = true; в DateTimePicker тоже есть такое свойство...

Как заставить ComboBox запомнить крайнее введенное значение?
Private Sub UserForm_Initialize() 'poryadkoviy_nomer TextBox1.Value = "" 'data 'chislo TextBox2.Value = "" ...

Как заставить RegEx выбирать кирилицу
Здраствуйте уважаемые форумчане. Почему то все мои регулярные выражения прекрасно работают с латиницей, и совершенно не хотят работать с...

2
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
01.03.2016, 23:34
KennyPanders,
Да, как-то странно реагирует комбобокс на программное открытие списка. Если убрать
C#
19
comboBox1.DroppedDown = true;
то все нормально.
Но если нужно открывать список при получении появлении курсора в комбобоксе, то так попробуйте открывать/ закрывать:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
  //...
        comboBox1.SelectedIndex = -1;
        comboBox1.TextChanged += new EventHandler(comboBox1_TextChanged);
        comboBox1.GotFocus += new EventHandler(comboBox1_GotFocus);
        comboBox1.LostFocus += new EventHandler(comboBox1_LostFocus);
    }
}
 
void comboBox1_LostFocus(object sender, EventArgs e)
{
    comboBox1.DroppedDown = false;
}
 
void comboBox1_GotFocus(object sender, EventArgs e)
{
    comboBox1.DroppedDown = true;
}
 
void comboBox1_TextChanged(object sender, EventArgs e)
{
    try
    {
        string filter = comboBox1.Text;
        bs.Filter = "Наименование LIKE '%" + filter + "%'";
        comboBox1.Text = filter;
        comboBox1.Select(filter.Length, 0);
    }
    catch
    {
        bs.Filter = string.Empty;
    }
}
1
2 / 2 / 0
Регистрация: 21.11.2015
Сообщений: 75
02.03.2016, 09:39  [ТС]
да, такая реализация тоже выглядит хорошо. Огромное вам спасибо за помощь. Пусть и не так как хотелось бы.

Хочу еще уточнить. Как устанавливать курсор при открытии формы в поле другого комбика. (Чтобы после открытия формы мне сразу не вываливал список организаций).

TabIndex другому комбику установил на 0.
в Form_Load установил .Focus() на втором комбике.

Однако при переходе на первый комбик - затем закрытие формы - и открытие формы снова, курсор по прежнему на первой форме.
Хотелось бы какое то событие типа "Открытие формы"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.03.2016, 09:39
Помогаю со студенческими работами здесь

Как заставить программу выбирать наибольшие число?
Нужно было сделать программу которая запрашивает 5 чисел и выбирает наибольшие и наименьшие число. С запросом чисел все понятно, но вот как...

Как удалить из файла значение combobox, сохранённого там как ID (значение combobox сохранялось вместе с richtextbox)
Здравствуйте, коллеги! Подскажите, плз... Сохраняю в один файл значение комбика (как ID) и значение richtextbox (а также отдельно в...

Как сделать, чтобы можно было выбирать нужный COM-порт в combobox
на данный момент программа работает только для определенного порта1: CONST WCHAR COM_string = L"COM1"; как сделать , чтобы...

Парсинг XML find(). Как заставить find() выбирать элементы только на первом уровне?
Пытаюсь распарсить XML-ответ от сервера. <reply> <sector> <users> <item> <sex>male</sex> ...

DBLookupComboBox - как выбирать значение из списка
Подскажите лузеру, как правильно настроить компонент DBLookupComboBox чтобы можно было выбирать значение из выпадающего списка? На...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru