2010-01-09 3 views
0

У меня есть 1 текстовое поле и 1 список в моей форме VB.visual basic List.box question

Я хочу проверить дублирующийся элемент, сравнить с textbox.text1 и listbox.list.

и если textbox.text1 значение «3333» и listbox.list кратное значение «1111» «2222» «3333» «4444»

так, как реализовать такие, как дубликат проверки рутина?

так, если дубликат обнаружить сравнения с текущим значением TEXT1 и сравнение с одним из значения

ListBox является, если обнаружить, хочет всплывать MessageBox

заранее спасибо

+0

Вы используете VB6 или VB.NET? –

+0

Какие типы объектов вы добавляете в свой ListBox? –

ответ

2

Предполагая, что вы вставляете строки в ваш ListBox вы можете сделать это:

Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click 
    Dim x As String 
    For Each x In ListBox1.Items 
     If (x = TextBox1.Text) Then 
      MessageBox.Show("Error") 
      Return 
     End If 
    Next 
    ListBox1.Items.Add(TextBox1.Text) 
End Sub 

Если это другой тип объекта, обладающий свойством Value, вам понадобится небольшой c висящий:

Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click 
    Dim x As Foo 
    For Each x In ListBox1.Items 
     If (x.Value = TextBox1.Text) Then 
      MessageBox.Show("Error") 
      Return 
     End If 
    Next 
    ListBox1.Items.Add(TextBox1.Text) 
End Sub 
1

Предполагая, что ListBox содержит строки, вы можете использовать Contains метод Items коллекции для проверки матчей. Пример (сделать форму с ListBox под названием '_theListBox', а TextBox называется '_theTextBox' и Label называется '_theLabel'):

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    _theListBox.Items.AddRange(New String() {"aaaa", "bbbb", "cccc", "dddd"}) 
End Sub 

Private Sub _theTextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _theTextBox.TextChanged 
    If ListBoxContainsItem(_theListBox, _theTextBox.Text) Then 
     _theLabel.Text = "It's a match" 
    Else 
     _theLabel.Text = "" 
    End If 
End Sub 

Private Function ListBoxContainsItem(ByVal lb As ListBox, ByVal text As String) As Boolean 
    ' check if the string is present in the list ' 
    Return lb.Items.Contains(text) 
End Function 
+0

+1 Хорошая точка с методом contains, но зачем создавать для нее отдельную функцию? –

+0

@Mark: относительно создания метода; Я просто хочу инкапсулировать детали реализации. В этом конкретном случае не требуется, но скажем, что проверка выполняется в нескольких местах в коде, которые по какой-то причине обнаруживают, что метод Contains не делает это правильно (измененные требования; только первые * n * символы должны быть проверено или что угодно), тогда у вас есть только одно место, где можно внести изменения, и большая часть кода не будет знать об этом. –