vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 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
Grundlagen Combobox Item hinzufügen 
Autor: Knabber
Datum: 26.01.19 19:36

VB.net

Hallo
Ich als Anfänger hab ein Problem mit einer Combobox
Die Box ist über Databinding,Dataset an einer Tabelle einer AccessDB gebunden.
Das füllen klappt,ist also nicht das Problem.
Alles mit Designer erstellt
Nun möchte Ich aber das zur Laufzeit ein Eintrag hinzugefügt werden kann.
Also

Ich trage einen String ein. Drücke auf "Return" und der neue Eintrag wird in der db gespeichert.
Und ebenfalls soll per "Del" Taste ein select. Eintrag gelöscht werden können

kann mir vorstellen das es irgendwie über Keydown,Ascii funktioniert.Hab das aber noch nie gemacht und hab auch keinen Ansatz (SuFu)nix gefunden
Wäre schön wenn jemand ein Beispielcode hätte damit Ich einen Ansatz zum weiterbasteln habe.
Gruß Sabine
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Grundlagen Combobox Item hinzufügen 
Autor: Manfred X
Datum: 26.01.19 20:57

Hallo!

Du bindest die Combobox an die Spalte einer Tabelle.
Wenn Du einen Eintrag einfügen/löschen willst, bedeutet das,
Du willst eine komplette Zeile in der angebundenen Datatable
einfügen bzw. löschen?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Grundlagen Combobox Item hinzufügen 
Autor: Knabber
Datum: 26.01.19 21:01

Ja, genau das möchte ich.
hab da mal was gebastelt aber das funktioniert nicht


  Private Sub Form1_KeyDown(sender As System.Object, e As _
    System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
        If e.KeyCode = Keys.Enter Then
 
            Me.Validate()
            EintraegeBindingSource.EndEdit()
            Me.EintraegeTableAdapter.Update(Me.HaushaltskasseDataSet.Eintraege)
 
        End If
    End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Grundlagen Combobox Item hinzufügen 
Autor: Knabber
Datum: 26.01.19 22:07

Nachtrag
Es existiert für diese Combobox natürlich eine eigene Tabelle
Die Tabelle hat nur diese eine Spalte.
Gruß
Sabine
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Grundlagen Combobox Item hinzufügen 
Autor: Knabber
Datum: 27.01.19 15:56

Hallo
Der Code scheint für mich etwas zu kompliziert.
Ich habe es jetzt anders gelöst.

Habe einfach eine Textbox an die Tabelle im DS gebunden.
einen Speicherbutton und einen entfernenbutton dazu und fertig.
nun wird die combo gleich mit dem neuen Eintrag angezeigt.

Habe nun eine Textbox +2 Buttons mehr auf das Form aber da das Prog nur für mich selber ist
und ich damit gut Leben kann soll es mir recht sein.

vielen Dank für die Mühe.

werde trotzdem deinen Code durcharbeiten um daraus zu lernen
vielen Dank dafür....
Gruß
Sabine
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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