Autor Beitrag
edvazubi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28



BeitragVerfasst: Do 21.03.19 15:55 
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:
ausblenden volle Höhe 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 user profile iconChristian S.: Topic aus C# & .NET Tutorials verschoben am Do 21.03.2019 um 15:24
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Do 21.03.19 18:36 
Wird denn die TextBox markiert angezeigt?
Evtl. setze noch mal explizit
ausblenden 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
ausblenden 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 ;- )

Für diesen Beitrag haben gedankt: edvazubi
edvazubi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28



BeitragVerfasst: Fr 22.03.19 13:37 
Hat funktioniert, schönen Dank.