2012-01-16 4 views
1

У меня есть вопросы? Если я ввожу данные в текстовом поле, Я хочу, чтобы мой ListView, чтобы выбрать одни и те же данные, введенные в текстовом поле,VB.NET Вопросы ListView

примера, У меня есть столбец StudentNumber в моем ListView и на ней есть данные (напр., 123456) Я введу 123456 в текстовое поле. ListView должен выбрать 123456? Пожалуйста, помогите

СПАСИБО,

ответ

2

Я думаю, что это будет делать то, что вы хотите. Он будет искать в столбце первый столбец ListView для текста в TextBox.

Настройте ListView:

With ListView1 
    .MultiSelect = False 'Ensure only one item selected at a time 
    .HideSelection = False 'Shows the selection when the textbox changes 
    'Add some items for testing 
    .Items.Add("1234") 
    .Items.Add("1122") 
    .Items.Add("1133") 
End With 

Затем в текстовое поле TextChanged измененном событие:

Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged 
    ListView1.SelectedItems.Clear() 
    Dim foundItem As ListViewItem = ListView1.FindItemWithText(TextBox1.Text, False, 0, False) 
    If (foundItem IsNot Nothing) Then foundItem.Selected = True 
End Sub 

В качестве альтернативы, если вы хотите указать, какой столбец вашего ListView для поиска текста, то это функция должна сделать трюк:

Private Sub SelectListViewItem(ByRef listviewSource As ListView, ByVal textToFind As String, ByVal column As Integer) 
    Dim foundItem As ListViewItem = Nothing 
    Dim startIndex As Integer = 0 

    listviewSource.SelectedItems.Clear() 

    Do Until Not foundItem Is Nothing AndAlso foundItem.SubItems(column).Text = TextBox2.Text 
     If foundItem Is Nothing Then startIndex = 0 Else startIndex = foundItem.Index + 1 
     If startIndex > listviewSource.Items.Count - 1 Then Exit Sub 'We have reached end of the listview 
     foundItem = listviewSource.FindItemWithText(textToFind, True, startIndex) 
     If foundItem Is Nothing Then Exit Sub 
    Loop 

    If (foundItem IsNot Nothing) Then foundItem.Selected = True 
End Sub 

Использование:

Private Sub TextBox2_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox2.TextChanged 

    SelectListViewItem(ListView1, TextBox2.Text, 1) 
End Sub 

Предупреждение - В обоих случаях, это может привести к ваше приложение работает плохо, если у вас есть много пунктов в вашем ListView, в этом случае вы могли бы рассмотреть вопрос о переносе кода в фоновом режиме рабочий

+0

Большое спасибо, сэр, у меня есть другой вопрос, что делать, если я хочу, чтобы элементы были нажаты, а не выбраны? спасибо –