Hallo zusammen,
ich stehe gerade etwas auf dem Schlauch, gerade weil ich das ganze schon einmal hatte, damalig hinbekommen habe und nun stehe ich wieder vor einer Denkblockade.
Es gibt eine Datenbank mit verschiedenen spalten, eine Form mit einer Textbox sowie eine weitere Form wo die Suchergebnisse in einer DataGridView dargestellt werden.
Nun möchte ich gerne bei Eingabe Event "TextChanged", dass ein separates Fenster unter der Textbox angezeigt wird mit dem gefilterten Ergebnis.
Soweit funktioniert das auch, eine Form mit einer DataGridView und Datengebundender Tabelle wird dargestellt inkl. Einträge.
Wenn ich nun Buchstaben in die Textbox der "Hauptform" eingebe, soll automatisch in der Form welche unterhalb der Textbox angezeigt wird, die DataGridView gefiltert werden.
Das Ergebnis welches am nähsten liegt soll dann mittels Doppelklick ausgewählt werden können und die Textbox übernommen werden.
Wieso ich dies nicht über den "AutoCompleteMode" mache, weil ich mehr als nur ein Ergebnis benötige in einer kompletten Darstellung statt nur ein Wort.
Dies soll dem jenigen helfen auch das richtige ausgewählt zu haben von den verschiedenen vorschlägen.
Derzeit habe ich das ganze mittels Timer gelöst, was aber wirklich nicht schön ist, seinen Dienst derzeit aber tut.
Ich weiß das es anderweitig besser geht, komme aber leider selbst nicht mehr auf die Lösung.
Hier einmal die "Hauptform" mit dem Textbox Event "TextChanged"...
Und hier einmal die Form, welche bei Eingabe von Buchstaben angezeigt wird, sowie die DataGridView welche dann gefiltert wird (derzeit mit Timer):
Vielleicht hat jemand eine Idee oder einen Rat, vielen Dank!
Greez Spike
ich stehe gerade etwas auf dem Schlauch, gerade weil ich das ganze schon einmal hatte, damalig hinbekommen habe und nun stehe ich wieder vor einer Denkblockade.
Es gibt eine Datenbank mit verschiedenen spalten, eine Form mit einer Textbox sowie eine weitere Form wo die Suchergebnisse in einer DataGridView dargestellt werden.
Nun möchte ich gerne bei Eingabe Event "TextChanged", dass ein separates Fenster unter der Textbox angezeigt wird mit dem gefilterten Ergebnis.
Soweit funktioniert das auch, eine Form mit einer DataGridView und Datengebundender Tabelle wird dargestellt inkl. Einträge.
Wenn ich nun Buchstaben in die Textbox der "Hauptform" eingebe, soll automatisch in der Form welche unterhalb der Textbox angezeigt wird, die DataGridView gefiltert werden.
Das Ergebnis welches am nähsten liegt soll dann mittels Doppelklick ausgewählt werden können und die Textbox übernommen werden.
Wieso ich dies nicht über den "AutoCompleteMode" mache, weil ich mehr als nur ein Ergebnis benötige in einer kompletten Darstellung statt nur ein Wort.
Dies soll dem jenigen helfen auch das richtige ausgewählt zu haben von den verschiedenen vorschlägen.
Derzeit habe ich das ganze mittels Timer gelöst, was aber wirklich nicht schön ist, seinen Dienst derzeit aber tut.
Ich weiß das es anderweitig besser geht, komme aber leider selbst nicht mehr auf die Lösung.
Hier einmal die "Hauptform" mit dem Textbox Event "TextChanged"...
VB.NET-Quellcode
- Public Sub Buchungs_nameTextBox_TextChanged(sender As Object, e As EventArgs) Handles Buchungs_nameTextBox.TextChanged
- If Buchungs_nameTextBox.ReadOnly = False And openquicksearch = 0 Then
- With Buchungs_nameTextBox
- Dim r As Rectangle = New Rectangle(.Left, .Top, .Width, .Height)
- ' in Bildschirmkoordianten umrechnen
- r = Me.RectangleToScreen(r)
- ' Form unterhalb des Buttons platzieren
- Dim oForm As New frm_quicksearch_buchungsname
- oForm.StartPosition = FormStartPosition.Manual
- oForm.Location = New Point(r.Left + 5, r.Bottom + 10)
- 'Übergabe Kostenträger und Sachkonto an Load
- quicksearch_kostentraeger = Kostentraeger_ComboBox.Text
- quicksearch_sachkonto = Sachkonten_ComboBox.Text
- ' Form anzeigen
- openquicksearch = 1
- oForm.Show()
- 'Focus auf Mainform wird gesetzt!
- Haushaltsprogramm_Mainform.Focus()
- 'Timer Start for Search
- 'frm_quicksearch_firmen.Timer_QuickSearch.Start()
- End With
- End If
- End Sub
Und hier einmal die Form, welche bei Eingabe von Buchstaben angezeigt wird, sowie die DataGridView welche dann gefiltert wird (derzeit mit Timer):
VB.NET-Quellcode
- Private Sub Timer_Quicksearch_Tick(sender As Object, e As EventArgs) Handles Timer_Quicksearch.Tick
- Dim Kostentraeger = frm_buchungen.quicksearch_kostentraeger
- Dim Sachkonto = frm_buchungen.quicksearch_sachkonto
- If frm_buchungen.openquicksearch = 0 Then
- Me.Close()
- End If
- 'Bei Texteingabe wird nach vorhandenen Firmen gesucht!
- Dim FilterBuchungsName_QuickSearch As String = "*" & frm_buchungen.Buchungs_nameTextBox.Text
- 'Aktuell geladene Tabelle wird auf Firmennamen durchsucht!
- Me.V_buchungs_namenTableAdapter.Fill_DataGrid(Me.Finanz_managerDataSet.v_buchungs_namen, kostentraeger:=Kostentraeger, sachkonto:=Sachkonto)
- Me.V_buchungs_namenBindingSource.Filter = ("Convert(buchungs_name, 'System.String') LIKE '" & FilterBuchungsName_QuickSearch & "*'")
- V_buchungs_namenDataGridView.ClearSelection()
- End Sub
- Private Sub V_buchungs_namenDataGridView_CellDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles V_buchungs_namenDataGridView.CellDoubleClick
- frm_buchungen.Buchungs_nameTextBox.Text = V_buchungs_namenDataGridView.CurrentCell.Value
- frm_buchungen.openquicksearch = 0
- Me.Close()
- End Sub
Vielleicht hat jemand eine Idee oder einen Rat, vielen Dank!
Greez Spike