Hi an alle!
In Form1 in meinem Program ist ein Datagridview mit mehreren Spalten.
Eine Suchfunktion in der nur eine Spalte nach einem exakten Wert durchsuch wird und die entsprechende Zelle dann farbig dargestellt wird hab ich schon
Die Suchfunktion befindet sich in einer neue Form!
Die Suche funktioniert auch ohne Probleme! Das einzige was mich stört ist das nur exakte Werte herausgesuch werden.
Suche ich z.B. nach "32" und in der Zelle steht "32b" wird diese nicht markiert.
Ich hab da schon nen Ansatz aber weiß nicht ganz genau wie ich den unterbringen soll oder ob er überhaupt funktioniert:
Wenn die Suchfunktion eine Zelle sich vornimmt dann:
Wie gesagt ist nur nen Ansatz noch kein korrekter Code.
Also ich möchte erreichen das er die Zelle auch dann markiert wenn der Suchtext nur ein Teil vom Zelleninhalt ist.
Kann mir da jemand helfen? Wäre echt super
In Form1 in meinem Program ist ein Datagridview mit mehreren Spalten.
Eine Suchfunktion in der nur eine Spalte nach einem exakten Wert durchsuch wird und die entsprechende Zelle dann farbig dargestellt wird hab ich schon
Die Suchfunktion befindet sich in einer neue Form!
VB.NET-Quellcode
- Private a As Integer ' a steht für die Spalte in der ich suchen möchte
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- Form1.DataGridView1.RowsDefaultCellStyle.BackColor = Color.White
- a = 1
- Me.Text = Form1.DataGridView1.Rows.Count - 1
- search_func.RunWorkerAsync()
- End Sub
- Private Sub search_func_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles search_func.DoWork
- Dim count As Integer = Me.Text
- For i = 0 To count - 1
- Threading.Thread.Sleep(10)
- search_func.ReportProgress(i)
- Next
- End Sub
- Private Sub search_func_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles search_func.ProgressChanged
- Label1.Text = e.ProgressPercentage
- If CStr(Form1.DataGridView1.Rows(Label1.Text).Cells(a).Value) = TextBox1.Text Then
- Form1.DataGridView1.Rows(Label1.Text).Cells(a).Style.BackColor = Color.Orange
- Else
- Form1.DataGridView1.Rows(Label1.Text).Cells(a).Style.BackColor = Color.White
- End If
- End Sub
- Private Sub search_func_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles search_func.RunWorkerCompleted
- a = 0
- label1.Text = "Suche wurde ausgeführt ..."
- End Sub
Die Suche funktioniert auch ohne Probleme! Das einzige was mich stört ist das nur exakte Werte herausgesuch werden.
Suche ich z.B. nach "32" und in der Zelle steht "32b" wird diese nicht markiert.
Ich hab da schon nen Ansatz aber weiß nicht ganz genau wie ich den unterbringen soll oder ob er überhaupt funktioniert:
Wenn die Suchfunktion eine Zelle sich vornimmt dann:
VB.NET-Quellcode
- Dim Suchzeichen as Integer = 0 ' Char Position im Suchfeld
- For i = 0 to Cell.lenght
- if cell.char(i) = Textbox1.Char(Suchzeichen) then
- if Suchzeichen < Textbox1.lenght then
- Suchzeichen +=1
- else
- if cell.char(i) = Textbox1.char(Suchzeichen) then
- if suchzeichen = Textbox1.lenght then
- cell.style.backcolor = color.orange
- endif
- endif
Wie gesagt ist nur nen Ansatz noch kein korrekter Code.
Also ich möchte erreichen das er die Zelle auch dann markiert wenn der Suchtext nur ein Teil vom Zelleninhalt ist.
Kann mir da jemand helfen? Wäre echt super
