Autor Beitrag
uwe1234
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Sa 16.07.11 10:37 
Hallo zusammen,

ich habe eine kleine Frage. In einem Form möchte ich gerne per Tastendruck eine Zahl, die in einer
Textbox steht erhöhen. Das klappt auch. Jetzt kommt mein Problem:
Ich würde gerne die Zahl verkleinern wenn ich die selbe Taste wie zum erhöhen drücke allerdings
mit shift.[/user]

Taste A -> Zahl++
Taste A + Taste Shift -> Zahl--


ausblenden 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:
int tmp = 0;
string eingabe = "";

private void ButtonA_Click(object sender, EventArgs e)
{
    tmp++;
    eingabe = Convert.ToString(tmp);
    AnzahlA.Text = eingabe;
}
        

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
     if(e.KeyCode == Keys.A)
     {
        this.ButtonA.PerformClick();
     }
            
     if (e.Modifiers == Keys.Shift && e.KeyCode == Keys.A)
     {
        tmp--;
        eingabe = Convert.ToString(tmp);
        AnzahlA.Text = eingabe;
      }
}


Für einen Tipp wäre ich dankbr. Denn wenn ich eine andere Taste für das abziehen nehme klappt es.


Danke und Gruß
Uwe
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4807
Erhaltene Danke: 1061

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Sa 16.07.11 12:20 
Hallo Uwe,

bei Shift+A werden bei deinem Code ja beide Anweisungen ausgeführt, also erst erhöht und dann sofort wieder erniedrigt.
Also am besten so:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
if (e.KeyCode == Keys.A)
{
  if (e.Modifiers == Keys.Shift)
  {
    // erniedrigen
  }
  else
  {
   // erhöhen
  }
}

(und statt dem PerformClick solltest du das Erhöhen und Erniedrigen in eine eigene Methode auslagern und diese dann von den beiden Ereignissen aus aufrufen)
uwe1234 Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Sa 16.07.11 18:32 
Hallo,

danke für die schnelle Antwort. Ich habe gedacht das bei Shift+A "beide" Tasten gleichzeitig
zurückgegeben werden und nicht einzeln.

Werde es versuchen.

Danke und Gruß