Страница: 1 | 2 |
|
Вопрос: Поиск по ListBox
|
Добавлено: 06.12.10 01:39
|
|
Автор вопроса: SlayerNik
|
Помогите пожалуйста сделать поиск по ListBox
допустим в textbox пишу слово, нажимаю кнопку, и нужно чтобы выделялась та строчка листбокса где есть такое слово, либо если такого нет чтобы выскакивало "нечего не найдено"
Ответить
|
Номер ответа: 2 Автор ответа: DimDoc
Вопросов: 21 Ответов: 104
|
Профиль | | #2
|
Добавлено: 29.12.10 12:42
|
например так:
-
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- TextBox1.Text = ""
- With ListBox1.Items
- .Add("МП-Ком правда")
- .Add("Tanya")
- .Add("Shannon")
- .Add("Московская правда")
- .Add("Московский комсомолец")
- .Add("Московские новости")
- .Add("Johnny")
- .Add("Mike")
- .Add("Derek")
- .Add("Scotty")
- .Add("МП-Сов Рос")
- .Add("Scott")
- .Add("Tyna")
- .Add("Diana")
- .Add("Chris")
- .Add("Stanley")
- .Add("Kamal")
- .Add("МП-Куряд")
- .Add("Молоко")
- .Add("Кефир")
- .Add("Каша")
- .Add("Сливки")
- .Add("Слава")
- .Add("Камаз")
- .Add("Молозиво")
- .Add("Сигареты")
- .Add("Марка")
- .Add("Магнолия")
- .Add("Мурка")
- .Add("Стрела")
- End With
- End Sub
-
- Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
- Dim countSymbol As Integer = Len(TextBox1.Text)
- Dim intSearchResult As Integer
- Dim strFind As String = UCase(TextBox1.Text)
-
- ListBox2.Items.Clear()
-
- For i = 0 To ListBox1.Items.Count - 1
- intSearchResult = InStr(UCase(Mid(ListBox1.Items(i), 1, countSymbol)), strFind)
- If intSearchResult > 0 Then ListBox2.Items.Add(ListBox1.Items(i))
- Next i
-
- If ListBox2.Items.Count = 0 And Not (countSymbol = 0) Then MessageBox.Show("Искомая строка: " & strFind & " не найдена", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
-
- End Sub
Ответить
|
Номер ответа: 4 Автор ответа: DimDoc
Вопросов: 21 Ответов: 104
|
Профиль | | #4
|
Добавлено: 29.12.10 14:09
|
почему ужас?
я новичек... а код работает исправно.
может так будет Не Ужас?
-
- Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged
- Dim searchString As String = Trim(LCase(TextBox2.Text))
- Dim countchar As Integer = Len(searchString)
- ListBox2.Items.Clear()
- If countchar = 0 Then
- Exit Sub
- Else
- For I = 0 To ListBox1.Items.Count - 1
- Dim StringName As String = Trim(LCase(Mid(ListBox1.Items(I), 1, countchar)))
- Dim mChar As Boolean = String.Equals(StringName, searchString)
-
- If mChar = True Then
- ListBox2.Items.Add(ListBox1.Items(I))
- End If
- Next
- End If
- End Sub
-
- Если опять УЖАС... Предложите, как правильно?
Ответить
|
Номер ответа: 6 Автор ответа: DimDoc
Вопросов: 21 Ответов: 104
|
Профиль | | #6
|
Добавлено: 29.12.10 14:59
|
чтобы выделялась найденная строка...
установите свойство listbox1.SelectionMode = MultiExtended
и код
-
- Private Sub Btnsearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btnsearch.Click
- Dim searchString As String = Trim(LCase(TextBox3.Text))
- Dim countchar As Integer = Len(searchString)
- Dim searchOk As Boolean = False
-
- ListBox1.SelectedItems.Clear()
- ListBox2.Items.Clear()
-
- If countchar = 0 Then
- Exit Sub
- Else
- For I = 0 To ListBox1.Items.Count - 1
- Dim StringName As String = Trim(LCase(Mid(ListBox1.Items(I), 1, countchar)))
- Dim mChar As Boolean = String.Equals(StringName, searchString)
-
- If mChar = True Then
- searchOk = True
- ListBox1.SelectedIndex = I
- ListBox2.Items.Add(ListBox1.Items(I))
- End If
- Next
- End If
-
- If Not (searchOk = True) Then MessageBox.Show("Строка """ & searchString & """ не найдена", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
-
- End Sub
Ответить
|
Номер ответа: 7 Автор ответа: DimDoc
Вопросов: 21 Ответов: 104
|
Профиль | | #7
|
Добавлено: 29.12.10 15:05
|
в NET не принято юзать ф-ции усаревшего языка
это я понял. Спасибо!!!
FinfString(string s) - вернёт только первое вхождение, верно?
а как вернуть все вхождения?
Ответить
|
Номер ответа: 10 Автор ответа: DimDoc
Вопросов: 21 Ответов: 104
|
Профиль | | #10
|
Добавлено: 29.12.10 15:28
|
так правильно?
-
- Private Sub BtnFindString_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnFindString.Click
- Dim searchString As String = TextBox4.Text
- If Not (searchString = String.Empty) Then
- Dim i As Integer = ListBox1.FindString(searchString)
- If Not (i = -1) Then
- ListBox1.SelectedIndex = i
- Else
- MessageBox.Show("Строка """ & searchString & """ не найдена", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
- End If
- End If
- End Sub
-
Ответить
|
Номер ответа: 11 Автор ответа: DimDoc
Вопросов: 21 Ответов: 104
|
Профиль | | #11
|
Добавлено: 29.12.10 15:30
|
опять ты за свое...
Это пока я писал, Вы уже ответили, а я не видел....
Ответить
|
Номер ответа: 12 Автор ответа: DimDoc
Вопросов: 21 Ответов: 104
|
Профиль | | #12
|
Добавлено: 29.12.10 15:31
|
с с лямбда-выражениями не знаком....
Ответить
|
Номер ответа: 14 Автор ответа: DimDoc
Вопросов: 21 Ответов: 104
|
Профиль | | #14
|
Добавлено: 29.12.10 16:10
|
исправил...
-
- Private Sub BtnFindString_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnFindString.Click
- Dim searchString As String = TextBox4.Text
- ListBox1.SelectedItems.Clear()
-
- If Not (String.IsNullOrEmpty(searchString)) Then
- Dim i As Integer = ListBox1.FindString(searchString)
- If i <> ListBox.NoMatches Then
- ListBox1.SelectedIndex = i
- Else
- Dim outString As String = String.Format("Строка '{0}' не найдена", searchString)
- MessageBox.Show(outString, "", MessageBoxButtons.OK, MessageBoxIcon.Information)
- End If
- End If
- End Sub
-
попробую цикл do...while
Ответить
|
Страница: 1 | 2 |
Поиск по форуму