| |
VB.NET - Ein- und UmsteigerGrundlagen 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 | |
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? | |
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 | |
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 | |
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. | |
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 | |
| 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 |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats sevWizard für VB5/6
Professionelle Assistenten im Handumdrehen
Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Weitere Infos
|
|
|
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
|
|