Tipp 0080 Doppeleinträge in List-/ ComboBox verhindern
Autor/Einsender:
Datum:
  Michael Werner
26.06.2005
Entwicklungsumgebung:   VB.Net 2003
Framework:   1.1
Über For ... Each-Schleifen wird vor dem Hinzufügen eines neuen Eintrags die Auflistung der List- oder ComboBox durchlaufen, um zu prüfen, ob der hinzuzufügende Wert bereits in der Elementauflistung vorhanden ist. Die hier verwendeten wiederverwendbaren Funktionen erleichtern die Weiterverwendung im eigenen Code.
Der Funktion muss als Parameter das Steuerelement (List- oder ComboBox) und der zu prüfende neue Eintrag übergeben werden. Der Rückgabewert (Boolean) der Funktion gibt an, ob der einzufügende Wert schon als Element der Auflistung existiert oder nicht.
Hinweis ab VB 2005
Das Framework 2.0 ab VB 2005 enthält mit der Methode Items.Contains eine sehr einfache Möglichkeit zur Prüfung von Doppeleinträgen. Dies wird im VB 2005 Beispiel des Tipps ListBox-Einträge speichern und einlesen gezeigt.
 
Public Class Form1
  Inherits System.Windows.Forms.Form
Vom Windows Form Designer generierter Code
  Private Function IsDrin(ByVal lst As ListBox, _
        ByVal newitem As String) As Boolean
    Dim item As String
    Dim i As Integer
    For Each item In lst.Items
      If item = newitem Then
        lst.SelectedIndex = i
        Return True
        Exit For
      End If
      i += 1
    Next
    Return False
  End Function

  Private Function IsDrin(ByVal cbo As ComboBox, _
        ByVal newitem As String) As Boolean
    Dim item As String
    Dim i As Integer
    For Each item In cbo.Items
      If item = newitem Then
        cbo.SelectedIndex = i
        Return True
        Exit For
      End If
      i += 1
    Next
    Return False
  End Function

  Private Sub Button1_Click(ByVal sender As System.Object, _
          ByVal e As System.EventArgs) Handles Button1.Click
    If Not IsDrin(ListBox1, TextBox1.Text) Then
      ListBox1.Items.Add(TextBox1.Text)
      Label2.ForeColor = Color.Blue
      Label2.Text = "Neuen Eintrag eingefügt!"
      ListBox1.SelectedIndex = ListBox1.Items.Count - 1
    Else
      Label2.ForeColor = Color.Red
      Label2.Text = "Eintrag schon vorhanden!"
    End If
  End Sub

  Private Sub Button2_Click(ByVal sender As System.Object, _
          ByVal e As System.EventArgs) Handles Button2.Click
    If Not IsDrin(ComboBox1, TextBox1.Text) Then
      ComboBox1.Items.Add(TextBox1.Text)
      Label2.ForeColor = Color.Blue
      Label2.Text = "Neuen Eintrag eingefügt!"
      ComboBox1.SelectedIndex = ComboBox1.Items.Count - 1
    Else
      Label2.ForeColor = Color.Red
      Label2.Text = "Eintrag schon vorhanden!"
    End If
  End Sub
End Class
 
Weitere Links zum Thema
ListBox-Einträge speichern und einlesen

Windows-Version
98/SE
ME
NT
2000
XP
Vista
Win 7


Download  (6,8 kB) Downloads bisher: [ 585 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Tipps | Projekte | Tutorials | Bücherecke | VB-/VBA-Tipps | API-Referenz | Komponenten | VB.Net-Forum | VB/VBA-Forum | DirectX-Forum | Foren-Archiv | DirectX | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Donnerstag, 8. Januar 2012