Benutzer mit den meisten Antworten
Autocomplete in Textbox erzwingen?

Frage
-
Hallo,
ich habe eine Textbox hier, welche ich mit mit Autovervollständigen (SuggestAppend) vervollständigen lasse. Nun möchte ich, dass der Benutzer nur Werte aus der AutoCompleteStringCollection eingeben kann und nichts anderes möglich ist. Mit einer Combobox habe ich es schon versucht, allerdings sind es einfach zu viele Werte, als dass man diese einfach durchscrollen könnte.
Jemand eine Idee zur Realisierung?
Danke!
Antworten
-
Hi,
du kannst beim TextChanged Ereignis der TextBox abfragen , ob der Wert in der textbox in deiner Autocomplete Liste ist.
private void textBox1_TextChanged(object sender, EventArgs e) { if (!string.IsNullOrEmpty(_autCompleteList.Find(p => p.StartsWith(textBox1.Text)))) return; textBox1.Text = textBox1.Text.Remove(textBox1.Text.Length - 1); textBox1.SelectionStart = textBox1.Text.Length; textBox1.ScrollToCaret(); }
Mal aus einem alten Projekt kopiert
EDIT: Du kannst auch das KeyDown Eregnis abfangen , die Prüfung belibt die Selbe, du kannst aber dann mit den KeyEventArgs SuporessKeyPress auf true setzten
private void textBox1_KeyDown(object sender, KeyEventArgs e) { if (!string.IsNullOrEmpty(_vtNumbers.Find(p => p.StartsWith(textBox1.Text)))) return; e.SuppressKeyPress = true; }
- Bearbeitet Pawel Warmuth Donnerstag, 23. Februar 2012 10:40
- Als Antwort markiert r33n Donnerstag, 23. Februar 2012 15:22
Alle Antworten
-
Hi,
du kannst beim TextChanged Ereignis der TextBox abfragen , ob der Wert in der textbox in deiner Autocomplete Liste ist.
private void textBox1_TextChanged(object sender, EventArgs e) { if (!string.IsNullOrEmpty(_autCompleteList.Find(p => p.StartsWith(textBox1.Text)))) return; textBox1.Text = textBox1.Text.Remove(textBox1.Text.Length - 1); textBox1.SelectionStart = textBox1.Text.Length; textBox1.ScrollToCaret(); }
Mal aus einem alten Projekt kopiert
EDIT: Du kannst auch das KeyDown Eregnis abfangen , die Prüfung belibt die Selbe, du kannst aber dann mit den KeyEventArgs SuporessKeyPress auf true setzten
private void textBox1_KeyDown(object sender, KeyEventArgs e) { if (!string.IsNullOrEmpty(_vtNumbers.Find(p => p.StartsWith(textBox1.Text)))) return; e.SuppressKeyPress = true; }
- Bearbeitet Pawel Warmuth Donnerstag, 23. Februar 2012 10:40
- Als Antwort markiert r33n Donnerstag, 23. Februar 2012 15:22