2016-10-25 6 views
1
Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click 
    Dim name As String = txtNames.Text 
    For i = 0 To lstbxNames.Items.Count - 1 
     If name = Str(lstbxNames.Items(i)) Then 
      MsgBox("This name is already in the list.") 
     Else 
      lstbxNames.Items.Add(name) 
     End If 
    Next 
End Sub 

項目は追加されませんが、 "lstbxNames.Items.Add(name)"をfor文の先頭に置くと、その項目は追加されません。VBのリストボックスに追加する

+0

lstbxNamesのタイプは何ですか? lstbxNames.Items(i)は何を返しますか?そのタイプは何ですか?その式に時計を入れてコードをトレースすると、何が得られますか? –

+0

こんにちはロバート、lstbxNames.Items(i)リストボックス内のすべての項目を返す必要があります、lstbxNamesの種類は何を意味するかわからない、単にVBのリストボックスです。私がリストボックスからアイテムを返すときに、それらを型文字列にする "Str"を追加します。 –

答えて

0

FORループにはほとんど問題がありません。私が見る通り、msg boxには同じの名前を複数回挿入しています。リストボックスにすでに存在する値を確認するには、追加する前にメソッドが含まれているかどうかを直接確認することができます。

リストに追加する前に、テキストボックスが空でないことを確認する必要があります。

Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click 
     Dim name As String = txtNames.Text 
     if (!string.IsNullOrEmpty(name)) Then 
      if (!lstbxNames.Items.Contains(name)) Then 
       lstbxNames.Items.Add(name); 
      else 
      MsgBox("This name is already in the list."); 
     End If 
    End Sub 
関連する問題