поиск в комбо

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

поиск в комбо

Сообщение lord0n » 05.03.2006 (Вс) 16:56

Коллеги, собственно вопрос:
как правильно реализовать поиск в комбе, так, чтобы найденные данные выделялись а введенные нет.
Ну, типа, как это сделано в лингво

этот код работает нормально, но до момента пока не нажимается делит, вот тогда начинается полная лажа
Код: Выделить всё

   Private Sub cboPKlad_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cboPKlad.TextChanged
      Dim o, p As Integer
      cboPKlad.DroppedDown = True
      o = Len(cboPKlad.Text)
      cboPKlad.SelectedIndex = cboPKlad.FindString(cboPKlad.Text)
      p = Len(cboPKlad.Text)
      cboPKlad.SelectionStart = o
      cboPKlad.SelectionLength = p
   End Sub
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 05.03.2006 (Вс) 17:09

Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 05.03.2006 (Вс) 17:19

GSerg писал(а):http://bbs.vbstreets.ru/viewtopic.php?t=13462 ?


хех, через апи я знаю как сделать
но хочется это сделать по нормальному, без использования апи
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 05.03.2006 (Вс) 17:27

Дык а методов FW нет соответствующих?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 05.03.2006 (Вс) 17:33

вот мне и интересно какие
я просто незнаю как найти равносильные команды во фреймворке :cry:
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 05.03.2006 (Вс) 17:37

Среди одноимённых методов ComboBox, наверное?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 05.03.2006 (Вс) 17:43

GSerg писал(а):Среди одноимённых методов ComboBox, наверное?


эээээээээээ
я наверно туплю, но как? :oops:
сендмеседжа там нету :roll:
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 05.03.2006 (Вс) 17:47

эээээээээээ
скорее всего!
сендмеседж используется там только для поиска. У тебя это FindString. Обрати внимание на всё остальное. Как то на обработку клавиш типа delete.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 05.03.2006 (Вс) 17:58

GSerg писал(а):эээээээээээ
скорее всего!
сендмеседж используется там только для поиска. У тебя это FindString. Обрати внимание на всё остальное. Как то на обработку клавиш типа delete.


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

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 05.03.2006 (Вс) 18:14

Код: Выделить всё
Public Property AutoCompleteCustomSource() As System.Windows.Forms.AutoCompleteStringCollection
    Member of System.Windows.Forms.ComboBox


Не то?
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 06.03.2006 (Пн) 4:03

FW 2.0? Понятия не имею.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 06.03.2006 (Пн) 8:32

а как этим пользоваться? :shock:
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 06.03.2006 (Пн) 9:54

в принципе все просто:
две процедуры
lstFind - сам поиск
lstKey - проверка нажатых клавиш
Код: Выделить всё

   Public j As Integer

   Public Sub lstFind(ByVal sender As Object)
      If j <= 1 Then sender.DroppedDown = True
      sender.SelectedIndex = sender.FindString(sender.Text)
      sender.SelectionStart = j
      sender.SelectionLength = Len(sender.Text)
   End Sub

   Public Sub lstKey(ByVal a As Integer)
      Select Case a
         Case Keys.Back
            j = j - 1
            If j < 0 Then j = 0
            Exit Sub
         Case Keys.Delete
            j = j - 1
            If j < 0 Then j = 0
            Exit Sub
         Case Keys.Return
            j = 0
         Case Else
            j = j + 1
            Exit Sub
      End Select
   End Sub


ну и в соответствующие методы сомбо вставляем вызов процедур
Код: Выделить всё

   Private Sub ComboBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles ComboBox1.KeyDown
      lstKey(e.KeyCode)
   End Sub

   Private Sub ComboBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.TextChanged
      lstFind(sender)
   End Sub
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 09.03.2006 (Чт) 10:23

собственно вопрос актуален
т. к. приведенный выше код сырой как вода
куча глюков и т. д.
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 109

    TopList  
cron