Hallo zusammen,
ich habe ein Problem mit einer Suchfunktion. Ich habe eine Suchefunktion geschrieben die Ihre Aufgabe auch einwandfrei erfüllt. Mein Problem ist nur, dass diese Suchfunktion sehr sehr langsam ist. Ich habe die Vermutung das meine For-Schleife das ganze einfach sehr langsam macht. Leider kenne ich keinen Weg dieses Geschwindigkeitsproblem zu lösen.
Vielleicht ist hier ja ein erfahrender Programmierer der mir helfen kann!
Hier einmal mein Code:
Nun noch eine Beschreibung was diese Suchfunktion machen soll:
Ich habe auf einem Dialog eine Listbox (lstErgebnis). In dieser Listbox sind alle Kunden aufgeliestet. Die Kundennamen werden aus einer SQL Datenbank ausgelesen und in die Listbox geschrieben. Die Listbox ist soriert von A nach Z.
Auf dem Dialog gibt es jetzt noch ein Textfeld (txtSucheEingabe). Der Benutzer hat hier die möglichkeit der Sucheingabe. Der Fokus in der Listbox soll mit der Eingabe immer mitwander. Sprich wenn der Benutzer ein "M" eingibt soll der erste Kundenname mit "M" markiert werden. Wenn jetzt der Benutzer noch ein "E" eingibt (spriche im Textfeld steht jetzt "ME") soll der erste Kundenname mit "ME" markiert werden. So soll es immer weitergehn. Sollte mal keine Übereinstimmung gefunden werden, soll auch kein Kundenname markiert werden. Die Groß- und Kleinschreibung sollte dabei keine Rolle spielen.
ich habe ein Problem mit einer Suchfunktion. Ich habe eine Suchefunktion geschrieben die Ihre Aufgabe auch einwandfrei erfüllt. Mein Problem ist nur, dass diese Suchfunktion sehr sehr langsam ist. Ich habe die Vermutung das meine For-Schleife das ganze einfach sehr langsam macht. Leider kenne ich keinen Weg dieses Geschwindigkeitsproblem zu lösen.
Vielleicht ist hier ja ein erfahrender Programmierer der mir helfen kann!
Hier einmal mein Code:
Code:
private void txtSucheEingabe_TextChanged(object sender, EventArgs e)
{
if (this.txtSucheEingabe.Text != "")
{
//markierung mitwander lassen
int maxindex = this.lstErgebnis.Items.Count;
string text;
for (int index = 0; index < maxindex; index++)
{
text = this.lstErgebnis.Items[index].ToString();
if (text.Length < this.txtSucheEingabe.Text.Length)
{
}
else
{
string help = text.Substring(0, this.txtSucheEingabe.Text.Length).ToUpper();
if (help == this.txtSucheEingabe.Text.ToUpper())
{
int help2 = this.lstErgebnis.Items.IndexOf(this.lstErgebnis.Items[index]);
this.lstErgebnis.SelectedIndex = help2;
break;
}
}
}
}
}
Nun noch eine Beschreibung was diese Suchfunktion machen soll:
Ich habe auf einem Dialog eine Listbox (lstErgebnis). In dieser Listbox sind alle Kunden aufgeliestet. Die Kundennamen werden aus einer SQL Datenbank ausgelesen und in die Listbox geschrieben. Die Listbox ist soriert von A nach Z.
Auf dem Dialog gibt es jetzt noch ein Textfeld (txtSucheEingabe). Der Benutzer hat hier die möglichkeit der Sucheingabe. Der Fokus in der Listbox soll mit der Eingabe immer mitwander. Sprich wenn der Benutzer ein "M" eingibt soll der erste Kundenname mit "M" markiert werden. Wenn jetzt der Benutzer noch ein "E" eingibt (spriche im Textfeld steht jetzt "ME") soll der erste Kundenname mit "ME" markiert werden. So soll es immer weitergehn. Sollte mal keine Übereinstimmung gefunden werden, soll auch kein Kundenname markiert werden. Die Groß- und Kleinschreibung sollte dabei keine Rolle spielen.