powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Поиск строки в ComboBox-е по первым символам
25 сообщений из 28, страница 1 из 2
Поиск строки в ComboBox-е по первым символам
    #32607444
Турист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В ComboBox-е, если нажать на какой-нибудь символ, то строка, начинающаяся с этого символа выбирается. Т.е. автоматически происходит поиск строки по первому символу. А можно сделать так, чтобы поиск вёлся по первым нескольким символам? (например: нажал "a" -> "b" -> "c" - выбралась строка "abcdef").

P.S. Как можно отключить выбирание строки ComboBox-а по первому символу?

Заранее благодарен за полезную информацию.
...
Рейтинг: 0 / 0
Поиск строки в ComboBox-е по первым символам
    #32607571
Angello
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если я правильно понял товарища Туриста, то поиск по первым нескольким символам в ComboBox-e выглядит примерно так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
    Private Sub ComboBoxName_KeyPress(ByVal sender As System.Object, ByVal e As KeyPressEventArgs) Handles ComboBoxName.KeyPress
        If Not Equals(e.KeyChar, ControlChars.Back) Then
            Dim strLength As Integer = ComboBoxName.Text.Length
            Dim counter As Integer = ComboBoxName.FindString(ComboBoxName.Text)
            If counter <> - 1  Then
                ComboBoxName.Text = ComboBoxName.GetItemText(ComboBoxName.Items.Item(counter))
                ComboBoxName.Select(strLength, ComboBoxName.Text.Length)
            End If
        End If
     End Sub
...
Рейтинг: 0 / 0
Поиск строки в ComboBox-е по первым символам
    #32607602
Турист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ваш пример работает хорошо, если у ComboBox-а свойство DropDownStyle=DropDown. А если DropDownStyle=DropDownList, то пример не работает. А мне как раз нужно осуществлять вышеупомянутый поиск при DropDownStyle=DropDownList.
...
Рейтинг: 0 / 0
Поиск строки в ComboBox-е по первым символам
    #32607635
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что нужно, ComboBox с Autocomplete????
...
Рейтинг: 0 / 0
Поиск строки в ComboBox-е по первым символам
    #32607681
Турист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извините, но я точно не знаю, что означает Autocomplete у ComboBox-а.

Нужен нередактируемый ComboBox(DropDownStype=DropDownList), чтобы при нажатии в нём комбинации символов, в нём выбиралась строка, начинающаяся с этой комбинации (например, комбинация: абв, выбирается стока абвгд).
...
Рейтинг: 0 / 0
Поиск строки в ComboBox-е по первым символам
    #32607714
Турист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Видимо, да - мне нужен ComboBox с AutoComplete
...
Рейтинг: 0 / 0
Поиск строки в ComboBox-е по первым символам
    #32607734
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наверное такое можно осуществить, но я не встречал подобного
P.S. А, почему в вашем случае не подходит DropDownStyle=DropDownList?
просто меня интересует эта проблема уже давно и есть кое-какие наработки...
...
Рейтинг: 0 / 0
Поиск строки в ComboBox-е по первым символам
    #32607741
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не встречал autucomplete при DropDownStype=DropDownList...
...
Рейтинг: 0 / 0
Поиск строки в ComboBox-е по первым символам
    #32607751
Турист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне как раз подходит DropDownStyle=DropDownList, но при этом не работает вышеупомянутый поиск элементов ComboBox-а.
...
Рейтинг: 0 / 0
Поиск строки в ComboBox-е по первым символам
    #32607769
Angello
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Создайте свой класс на основе ComboBox где будет поле q запоминающее строку символов
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    Dim q As String

    Private Sub ComboBox1_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs) Handles ComboBox1.KeyPress
       Dim counter As Integer = ComboBox1.FindString(q & e.KeyChar)
       If counter <> - 1  Then
           ComboBox1.Text = ComboBox1.GetItemText(ComboBox1.Items.Item(counter))
           q &= e.KeyChar
       Else
           q = e.KeyChar
       End If
   End Sub
Помоему это то что нужно :)
...
Рейтинг: 0 / 0
Поиск строки в ComboBox-е по первым символам
    #32607776
Angello
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотя могу и ошибаться...
...
Рейтинг: 0 / 0
Поиск строки в ComboBox-е по первым символам
    #32607787
Angello
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообще можно использовать и DropDownStyle=DropDown просто ограничить результаты ввода содержимыми элементами ComboBox-а Решений много, Вам выбирать. Незная всей проблемы больше помочь не могу.
...
Рейтинг: 0 / 0
Поиск строки в ComboBox-е по первым символам
    #32607840
Angello
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AutoComplete есть у ComboBox-а под NET Framework v2.0
И насколько я понял в качестве AutoCompleteSource может выступать не только ListItems, но и RecentlyUsedList, FileSystem, HistoryList и т.д. и т.п.
...
Рейтинг: 0 / 0
Поиск строки в ComboBox-е по первым символам
    #32608141
Angello
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу простить сразу не подумал только сейчас пришло. Так будет правильнее
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
        Dim counter As Integer = ComboBox1.FindString(q & e.KeyChar)
        If counter <> - 1  Then
            ComboBox1.Text = ComboBox1.GetItemText(ComboBox1.Items.Item(counter))
            q &= e.KeyChar
        Else
            q = e.KeyChar
            ComboBox1.Text = ComboBox1.GetItemText(q)
        End If
...
Рейтинг: 0 / 0
Поиск строки в ComboBox-е по первым символам
    #32608142
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не могу найти что есть
e.KeyChar
в коде, кот приведен выше, e.KeyChar подчеркивается
...
Рейтинг: 0 / 0
Поиск строки в ComboBox-е по первым символам
    #32608144
Angello
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Private Sub ComboBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles ComboBox1.KeyPress
...
Рейтинг: 0 / 0
Поиск строки в ComboBox-е по первым символам
    #32608150
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сори, не увидела
...
Рейтинг: 0 / 0
Поиск строки в ComboBox-е по первым символам
    #32608171
Angello
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
e.KeyChar - символ вводимый с клавиатуры в событии KeyPress
sender - объект вызывающий событие, e - клавиша
...
Рейтинг: 0 / 0
Поиск строки в ComboBox-е по первым символам
    #32608318
Турист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чё-то Ваш пример не совсем хорошо работает. Когда полностью набираю слово, т.е. когда нажимаю последнюю букву, строка правильно находится в combobox-е, но в процессе набирания текста в combobox-е иногда выбираются слова, начинающиеся с текущих букв.
...
Рейтинг: 0 / 0
Поиск строки в ComboBox-е по первым символам
    #32608384
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А Вы думаете это легко вот так взять и соорудить свойство???
Я думаю там ещё есть неполадки, но они исправляются созданием новых событий
Человек Вам просто привёл один из возможных вариантов решения, а дальше сами подумайте...
...
Рейтинг: 0 / 0
Поиск строки в ComboBox-е по первым символам
    #32608595
Турист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большое спасибо за полезную информацию.
...
Рейтинг: 0 / 0
Поиск строки в ComboBox-е по первым символам
    #32609001
Angello
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ТуристЧё-то Ваш пример не совсем хорошо работает. Когда полностью набираю слово, т.е. когда нажимаю последнюю букву, строка правильно находится в combobox-е, но в процессе набирания текста в combobox-е иногда выбираются слова, начинающиеся с текущих букв.
По логике никаких ошибок нет хотя сам не пробовал. Но обычно в мелочах не ошибаюсь. Скорее всего неправильно набираете (не следите за набираемыми символами). И это действительно один из вариантов. По хорошему если, создавать класс на примере вышепреведенного кода, стоит добавить проверку на символьную клавишу и только потом его можно нормально использовать.
...
Рейтинг: 0 / 0
Поиск строки в ComboBox-е по первым символам
    #32609037
Angello
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to Турист
прошу пардона действительно иногда выбрасывает не то, что нужно посмотрю позже. Сейчас нет времени. Возможно нужно переопределить событие или ещё чтонибудь.

vladgrigА Вы думаете это легко вот так взять и соорудить свойство???
Скорее всего под свойством подразумевалось событие ...
...
Рейтинг: 0 / 0
Поиск строки в ComboBox-е по первым символам
    #32609057
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Properties - свойства (по-русски)...
Для переопределения, добавления и т.д. свойств (в частности ComboBox - autocomplete ) создаём нужные нам события... а так же функции и т.п.
Так что нарушения логики в моём высказывании нет...
Если хотите, могу выложить ComboBox с автовыбором открытый код(только при DropDownStyle=DropDown)...
...
Рейтинг: 0 / 0
Поиск строки в ComboBox-е по первым символам
    #32609183
Angello
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vladgrigProperties - свойства (по-русски)...
Для переопределения, добавления и т.д. свойств (в частности ComboBox - autocomplete ) создаём нужные нам события... а так же функции и т.п.
Так что нарушения логики в моём высказывании нет...Полностью согласен ...
vladgrigЕсли хотите, могу выложить ComboBox с автовыбором открытый код(только при DropDownStyle=DropDown)...Выглядит примерно так ...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Public Class cboAutoComplite
    Inherits ComboBox
    Private q As String

    Protected Overrides Sub OnKeyPress(ByVal e As KeyPressEventArgs)
        MyBase.OnKeyPress(e)
        Dim counter As Integer = MyBase.FindString(q & e.KeyChar, - 1 )
        If counter <> - 1  Then
            MyBase.Text = MyBase.GetItemText(MyBase.Items.Item(counter))
            q &= e.KeyChar
        Else
            q = e.KeyChar
            counter = MyBase.FindString(q, - 1 )
            If counter = - 1  Then
                MyBase.Text = ""
            Else
                MyBase.Text = MyBase.GetItemText(MyBase.Items.Item(counter))
            End If
        End If
    End Sub
End Class
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Поиск строки в ComboBox-е по первым символам
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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