vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Grundlagen Combobox Item hinzufügen 
Autor: Manfred X
Datum: 27.01.19 06:38

Hallo!

Eventuell ist eine Combobox für Deine Zwecke
nicht gut geeignet.

Das folgende untypisierte Windows.Forms-Beispiel beachtet
bei der Benutzereingabe
- Sortieren und Filtern in der Bindingsource
- Eindeutigkeit der hinzugefügten Einträge in der Source

Übrigens:
Es ist gewöhnlich nicht empfehlenswert, bei jeder Datenänderung
sofort ein Datenbank-Update durchzuführen.
Besser erst bei Änderung des Dataset-Fill, beim Schließen
des Formulars oder nach einer gewissen Zeitspanne (Timer).

Public Class frmComboDemo
 
    Dim dtSource As New DataTable
    Dim bs As New BindingSource
 
    Dim WithEvents cbo As New ComboBox With
         {.Parent = Me, .DropDownStyle = ComboBoxStyle.DropDown}
 
 
    Private Sub frmComboDemo_Load(sender As Object,
        e As EventArgs) Handles MyBase.Load
 
        With dtSource
            'Testdaten
            .Columns.Add("Comboitems", GetType(String))
            For i As Integer = 0 To 99
                .Rows.Add("ItemA" & Format(99 - i, "00"))
                .Rows.Add("ItemB" & Format(99 - i, "00"))
            Next i
        End With
 
        'Datenbindung einrichten
        bs.DataSource = dtSource
        cbo.DisplayMember = dtSource.Columns(0).ColumnName
        cbo.DataSource = bs
 
        'Daten in der Combobox sortieren und filtern
        bs.Sort = cbo.DisplayMember
        bs.Filter = cbo.DisplayMember & " Like 'ItemA*' "
 
    End Sub
 
 
    Private Sub cbo_KeyDown(sender As Object, 
        e As KeyEventArgs) Handles cbo.KeyDown
 
        If e.KeyCode = Keys.Return Then
            Dim txt As String = cbo.Text.Trim
            'Hier Validierungscode für Benutzereingaben einfügen
            If String.IsNullOrWhiteSpace(txt) Then Exit Sub
 
            'Hier alternativ eventuell in der Bindingsource suchen
            Dim index As Integer = SourceIndexOf(txt)
            If index >= 0 Then
                'Benutzereintrag bereits in Quelle vorhanden
                Exit Sub
            End If
 
            dtSource.Rows.Add(txt) 'Benutzereintrag in Quelle übernehmen
 
            index = bs.Find(cbo.DisplayMember, txt)
            If index >= 0 Then
                cbo.SelectedIndex = index 'ggf. neuen Eintrag wählen
                cbo.SelectionStart = cbo.Text.Length + 1
            End If
        ElseIf e.KeyCode = Keys.Delete Then
            If cbo.SelectedIndex < 0 Then Exit Sub
            bs.Remove(cbo.SelectedItem)
        End If
 
    End Sub
 
 
    Private Function SourceIndexOf(ByVal txt As String) As Integer
 
        'Ist ein Benutzereintrag bereits in der Quelle vorhanden?
        'ggf. noch DBNull.Value (IsDBNull) abfangen
 
        txt = Trim(txt)
        Dim found As Boolean = False, index As Integer = -1
        Do
            index += 1
            found = dtSource.Rows(index).Item(cbo.DisplayMember).ToString = txt
        Loop While Not found And index < dtSource.Rows.Count - 1
        Return If(found, index, -1)
    End Function
 
End Class


Beitrag wurde zuletzt am 27.01.19 um 07:03:22 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Grundlagen Combobox Item hinzufügen710Knabber26.01.19 19:36
Re: Grundlagen Combobox Item hinzufügen346Manfred X26.01.19 20:57
Re: Grundlagen Combobox Item hinzufügen333Knabber26.01.19 21:01
Re: Grundlagen Combobox Item hinzufügen367Knabber26.01.19 22:07
Re: Grundlagen Combobox Item hinzufügen402Manfred X27.01.19 06:38
Re: Grundlagen Combobox Item hinzufügen325Knabber27.01.19 15:56

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel