найти решение для поиска строки в списке - PullRequest
0 голосов
/ 21 ноября 2010

У меня есть 4 элемента в моей форме ......... буксирный ящик, одна кнопка и одно текстовое поле. У меня есть список "А" со многими элементами ..... Мне нужен элемент в списке«B» из списка «A» следующие шаги ... которые я хотел бы выполнить ...........

1) введите слово или символ в текстовое поле 2) нажмите кнопку 3) список появится в списке «B» ......., который является символом или начало строки в списке «A», то есть мы пишем в текстовом поле (для соответствия)

Мне нужна помощь, в которой элемент, который может быть в списке «B», получает список «A», который является Стартовая строка или символ, который мы вводим в текстовое поле.пожалуйста, попытайтесь решить меня ..........

Ответы [ 2 ]

3 голосов
/ 21 ноября 2010

Не совсем уверен, что я следую.Использование текстового поля «Измененное событие» будет хорошим триггером вместо кнопки.Просто итерируйте элементы списка и проверьте на совпадение с String.StartsWith.Например:

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
    ListBox2.Items.Clear()
    If TextBox1.Text.Length > 0 Then
        For index As Integer = 0 To ListBox1.Items.Count - 1
            Dim txt = ListBox1.Items(index).ToString()
            If txt.StartsWith(TextBox1.Text, StringComparison.CurrentCultureIgnoreCase) Then
                ListBox2.Items.Add(txt)
            End If
        Next
    End If
End Sub
1 голос
/ 21 ноября 2010

У меня нет IDE передо мной, и прошло много времени с тех пор, как я занимался разработкой WinForms, поэтому у меня может не быть точного названия события или чего-то другого, но вы поняли идею. Это также означает, что мой код будет на C #, так как я более знаком с этим, но вы должны быть в состоянии найти VB-эквивалент.

Сначала вы захотите привязать правильное событие в текстовом поле. Может быть, событие KeyPress или KeyUp? Или TextChanged? Вы хотите тот, который запускает любое изменение текста в текстовом поле. В этом случае вы будете перебирать элементы в списке A и сравнивать их значения с текстом в текстовом поле. Базовое сравнение строк - это все, что нужно, если есть .StartsWith() или что-то в этом роде, в противном случае какое-то базовое использование .Substring() подойдет (на основе длины строки в текстовом поле).

Цикл, вероятно, будет выглядеть примерно так:

listboxA.Items.ForEach(i =>
    {if (i.StartsWith(textboxA.Text)) listboxB.Items.Add(i);});

Или ...

foreach (var i in listboxA.Items)
    if (i.StartsWith(textBoxA.Text))
        listboxB.Items.Add(i);

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...