2010-01-09 9 views
0

J'ai 1 zone de texte et 1 zone de liste dans mon formulaire VB.Visual basic List.box question

Je veux vérifier l'article en double, comparer avec l'élément textbox.text1 et listbox.list.

et si textbox.text1 valeur est '3333' et la valeur multiple listbox.list est '1111' '2222' '3333' '4444'

alors comment mettre en œuvre cette routine comme de vérification en double?

donc si double détection compare avec la valeur text1 actuelle et comparer avec l'un des

valeur

de ListBox est si détecter, veulent au popup messagebox

merci à l'avance

+0

Utilisez-vous VB6 VB.NET ou? –

+0

Quels types d'objets ajoutez-vous à votre ListBox? –

Répondre

2

En supposant que vous insérez des chaînes dans votre ListBox vous pouvez faire ceci:

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 

Si c'est un autre type d'objet qui a une propriété appelée valeur alors vous avez besoin d'un petit c hangement:

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

En supposant que le ListBox contient des chaînes, vous pouvez utiliser la méthode Contains de la collection Items pour vérifier les matchs. Exemple (faire une forme avec un ListBox appelé '_theListBox', un TextBox appelé '_theTextBox' et un Label appelé '_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 Bon point avec la méthode contains, mais pourquoi créer une fonction séparée? –

+0

@Mark: concernant la création d'une méthode; Je voudrais juste encapsuler les détails de mise en œuvre. Pas vraiment nécessaire dans ce cas particulier, mais disons que la vérification est effectuée à plusieurs endroits dans le code que vous pour une raison quelconque détecter que la méthode Contient ne le fait pas correctement (exigences modifiées, seuls les premiers caractères * n * doivent être vérifié, ou peu importe), alors vous avez seulement un endroit où faire le changement, et la plupart du code ne le saura pas. –