Entwickler-Ecke
WinForms - Textbox mit KeyDown Event befüllen
edvazubi - Do 21.03.19 14:55
Titel: Textbox mit KeyDown Event befüllen
Hey, ich habe ein Problem. Ich möchte per KeyDown Event ein Panel aufrufen in dem sich eine TextBox befindet. Diese soll bereits während des Aufrufens mit der ersten gedrückten Taste befüllt werden. Aktuell schaffe ich es, das Panel aufzurufen und gleichzeitig die gewünschte Zahl einzutragen, danach kann ich aber nicht weiter tippen, da die erste Zahl dann immer ersetzt wird. Der Code dazu sieht in etwa so aus:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37:
| private void Form1_KeyDown_1(object sender, KeyEventArgs e) {
if (e.KeyCode == Keys.E) { Application.Exit(); } if (e.KeyCode == Keys.D1 || e.KeyCode == Keys.NumPad1) { ShowSuche(); textBox1.Text = "1"; } else if (e.KeyCode == Keys.D2 || e.KeyCode == Keys.NumPad2) { ShowSuche(); textBox1.Text = "2"; } else if (e.KeyCode == Keys.D3 || e.KeyCode == Keys.NumPad3) { ShowSuche(); textBox1.Text = "3"; } else { HideSuche(); } textBox1.SelectionStart = textBox1.Text.Length; }
public void ShowSuche() { panel1.Show(); textBox1.Focus(); } |
Ich habe das ganze einmal stark abgekürzt. Ich hoffe jemand versteht mein Problem und kennt eine Lösung.
Moderiert von Christian S.: Topic aus C# & .NET Tutorials verschoben am Do 21.03.2019 um 15:24
Th69 - Do 21.03.19 17:36
Wird denn die
TextBox markiert angezeigt?
Evtl. setze noch mal explizit
C#-Quelltext
1:
| textBox1.SelectionLength = 0; |
Was mir noch einfällt: Hast du
KeyPreview für die Form auf
true gesetzt? Dann wird jedesmal zuerst das
KeyDown-Ereignis ausgeführt, d.h. z.B. bei einer weiteren Eingabe von "1" nochmal der Text neu gesetzt!
PS: Ich würde das Setzen des Textes und die Markierung auch in
ShowSuche vornehmen, à la
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| public void ShowSuche(string text) { panel1.Show();
textBox1.Text = text; textBox1.SelectionStart = textBox1.Text.Length; textBox1.SelectionLength = 0; textBox1.Focus(); } |
(und bessere Namen für die Steuerelemente vergeben ;- )
edvazubi - Fr 22.03.19 12:37
Hat funktioniert, schönen Dank.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!