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

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

Заранее благодарен за полезную информацию.
...
Рейтинг: 0 / 0
16.07.2004, 11:09
    #32607571
Angello
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск строки в ComboBox-е по первым символам
Если я правильно понял товарища Туриста, то поиск по первым нескольким символам в 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
16.07.2004, 11:27
    #32607602
Турист
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск строки в ComboBox-е по первым символам
Ваш пример работает хорошо, если у ComboBox-а свойство DropDownStyle=DropDown. А если DropDownStyle=DropDownList, то пример не работает. А мне как раз нужно осуществлять вышеупомянутый поиск при DropDownStyle=DropDownList.
...
Рейтинг: 0 / 0
16.07.2004, 11:36
    #32607635
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск строки в ComboBox-е по первым символам
а что нужно, ComboBox с Autocomplete????
...
Рейтинг: 0 / 0
16.07.2004, 11:46
    #32607681
Турист
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск строки в ComboBox-е по первым символам
Извините, но я точно не знаю, что означает Autocomplete у ComboBox-а.

Нужен нередактируемый ComboBox(DropDownStype=DropDownList), чтобы при нажатии в нём комбинации символов, в нём выбиралась строка, начинающаяся с этой комбинации (например, комбинация: абв, выбирается стока абвгд).
...
Рейтинг: 0 / 0
16.07.2004, 11:56
    #32607714
Турист
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск строки в ComboBox-е по первым символам
Видимо, да - мне нужен ComboBox с AutoComplete
...
Рейтинг: 0 / 0
16.07.2004, 12:01
    #32607734
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск строки в ComboBox-е по первым символам
наверное такое можно осуществить, но я не встречал подобного
P.S. А, почему в вашем случае не подходит DropDownStyle=DropDownList?
просто меня интересует эта проблема уже давно и есть кое-какие наработки...
...
Рейтинг: 0 / 0
16.07.2004, 12:03
    #32607741
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск строки в ComboBox-е по первым символам
не встречал autucomplete при DropDownStype=DropDownList...
...
Рейтинг: 0 / 0
16.07.2004, 12:08
    #32607751
Турист
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск строки в ComboBox-е по первым символам
Мне как раз подходит DropDownStyle=DropDownList, но при этом не работает вышеупомянутый поиск элементов ComboBox-а.
...
Рейтинг: 0 / 0
16.07.2004, 12:14
    #32607769
Angello
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск строки в ComboBox-е по первым символам
Создайте свой класс на основе 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
16.07.2004, 12:15
    #32607776
Angello
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск строки в ComboBox-е по первым символам
Хотя могу и ошибаться...
...
Рейтинг: 0 / 0
16.07.2004, 12:18
    #32607787
Angello
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск строки в ComboBox-е по первым символам
Вообще можно использовать и DropDownStyle=DropDown просто ограничить результаты ввода содержимыми элементами ComboBox-а Решений много, Вам выбирать. Незная всей проблемы больше помочь не могу.
...
Рейтинг: 0 / 0
16.07.2004, 12:34
    #32607840
Angello
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск строки в ComboBox-е по первым символам
AutoComplete есть у ComboBox-а под NET Framework v2.0
И насколько я понял в качестве AutoCompleteSource может выступать не только ListItems, но и RecentlyUsedList, FileSystem, HistoryList и т.д. и т.п.
...
Рейтинг: 0 / 0
16.07.2004, 13:58
    #32608141
Angello
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск строки в ComboBox-е по первым символам
Прошу простить сразу не подумал только сейчас пришло. Так будет правильнее
Код: 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
16.07.2004, 13:59
    #32608142
irinka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск строки в ComboBox-е по первым символам
не могу найти что есть
e.KeyChar
в коде, кот приведен выше, e.KeyChar подчеркивается
...
Рейтинг: 0 / 0
16.07.2004, 13:59
    #32608144
Angello
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск строки в ComboBox-е по первым символам
Private Sub ComboBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles ComboBox1.KeyPress
...
Рейтинг: 0 / 0
16.07.2004, 14:02
    #32608150
irinka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск строки в ComboBox-е по первым символам
Сори, не увидела
...
Рейтинг: 0 / 0
16.07.2004, 14:08
    #32608171
Angello
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск строки в ComboBox-е по первым символам
e.KeyChar - символ вводимый с клавиатуры в событии KeyPress
sender - объект вызывающий событие, e - клавиша
...
Рейтинг: 0 / 0
16.07.2004, 14:52
    #32608318
Турист
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск строки в ComboBox-е по первым символам
Чё-то Ваш пример не совсем хорошо работает. Когда полностью набираю слово, т.е. когда нажимаю последнюю букву, строка правильно находится в combobox-е, но в процессе набирания текста в combobox-е иногда выбираются слова, начинающиеся с текущих букв.
...
Рейтинг: 0 / 0
16.07.2004, 15:12
    #32608384
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск строки в ComboBox-е по первым символам
А Вы думаете это легко вот так взять и соорудить свойство???
Я думаю там ещё есть неполадки, но они исправляются созданием новых событий
Человек Вам просто привёл один из возможных вариантов решения, а дальше сами подумайте...
...
Рейтинг: 0 / 0
16.07.2004, 16:12
    #32608595
Турист
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск строки в ComboBox-е по первым символам
Большое спасибо за полезную информацию.
...
Рейтинг: 0 / 0
16.07.2004, 19:01
    #32609001
Angello
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск строки в ComboBox-е по первым символам
ТуристЧё-то Ваш пример не совсем хорошо работает. Когда полностью набираю слово, т.е. когда нажимаю последнюю букву, строка правильно находится в combobox-е, но в процессе набирания текста в combobox-е иногда выбираются слова, начинающиеся с текущих букв.
По логике никаких ошибок нет хотя сам не пробовал. Но обычно в мелочах не ошибаюсь. Скорее всего неправильно набираете (не следите за набираемыми символами). И это действительно один из вариантов. По хорошему если, создавать класс на примере вышепреведенного кода, стоит добавить проверку на символьную клавишу и только потом его можно нормально использовать.
...
Рейтинг: 0 / 0
16.07.2004, 19:40
    #32609037
Angello
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск строки в ComboBox-е по первым символам
to Турист
прошу пардона действительно иногда выбрасывает не то, что нужно посмотрю позже. Сейчас нет времени. Возможно нужно переопределить событие или ещё чтонибудь.

vladgrigА Вы думаете это легко вот так взять и соорудить свойство???
Скорее всего под свойством подразумевалось событие ...
...
Рейтинг: 0 / 0
16.07.2004, 20:13
    #32609057
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск строки в ComboBox-е по первым символам
Properties - свойства (по-русски)...
Для переопределения, добавления и т.д. свойств (в частности ComboBox - autocomplete ) создаём нужные нам события... а так же функции и т.п.
Так что нарушения логики в моём высказывании нет...
Если хотите, могу выложить ComboBox с автовыбором открытый код(только при DropDownStyle=DropDown)...
...
Рейтинг: 0 / 0
17.07.2004, 10:06
    #32609183
Angello
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск строки в ComboBox-е по первым символам
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
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Поиск строки в ComboBox-е по первым символам / 25 сообщений из 28, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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