2016-12-16 9 views
0
private void Form1_KeyDown(object sender, KeyEventArgs e) 
    { 
     switch (e.KeyCode) 
     { 
      case Keys.Up: 
       YUlt = YUlt - (PDiff + 10); 
       Draw.AddEllipse(XUlt, YUlt, 20, 20, Colour); 
       break; 
      case Keys.Down: 
       YUlt = YUlt + (PDiff + 10); 
       Draw.AddEllipse(XUlt, YUlt, 20, 20, Colour); 
       break; 
      case Keys.Left: 
       XUlt = XUlt - (PDiff + 10); 
       Draw.AddEllipse(XUlt, YUlt, 20, 20, Colour); 
       break; 
      case Keys.Right: 
       XUlt = XUlt + (PDiff + 10); 
       Draw.AddEllipse(XUlt, YUlt, 20, 20, Colour); 
       break; 

     } 

Ok, also ich versuche, eine Winform-App zu machen, wo Sie Kreise mit der Tastatur zeichnen. Dieses Programm verwendet die GDIDrawer-Schnittstelle, die von NAIT erstellt wurde, ist aber für diese Frage nicht wichtig, also machen Sie sich keine Sorgen über Draw.AddEllipse.Wenn Sie zwei Tasten gleichzeitig gedrückt halten

Der obige Schalter Fall funktioniert perfekt, um rote Punkte zu zeichnen, aber die folgende if-Anweisung soll funktionieren, wenn der Benutzer die F1-Taste gedrückt hält und eine Pfeiltaste drückt, wird der Punkt gezeichnet Umranden Sie sie mit einem weißen Rand.

 if (Keys.F1 && (Keys.Down || Keys.Up || Keys.Left || Keys.Right)) 
     { 
      switch (e.KeyCode) 
      { 
       case Keys.Up: 
        YUlt = YUlt - (PDiff + 10); 
        Draw.AddEllipse(XUlt, YUlt, 20, 20, Colour, 2, Color.White); 
        break; 
       case Keys.Down: 
        YUlt = YUlt + (PDiff + 10); 
        Draw.AddEllipse(XUlt, YUlt, 20, 20, Colour, 2, Color.White); 
        break; 
       case Keys.Left: 
        XUlt = XUlt - (PDiff + 10); 
        Draw.AddEllipse(XUlt, YUlt, 20, 20, Colour, 2, Color.White); 
        break; 
       case Keys.Right: 
        XUlt = XUlt + (PDiff + 10); 
        Draw.AddEllipse(XUlt, YUlt, 20, 20, Colour, 2, Color.White); 
        break; 

      } 
     } 

Alles, was ich wissen müssen, ist, wie es zu machen, dass der Benutzer die F1-Taste gedrückt halten, können die Punkte Grenzen zu geben, wenn sie mit den Pfeiltasten drücken, aber das Programm noch Punkte zeichnen unabhängig davon, ob F1

gedrückt wird
+0

warten. ... willst du Punkte zeichnen, wenn ich f1 drücke und Punkte zeichne, wenn ich Pfeile drücke? und auch Punkte zeichnen, wenn f1 nicht gedrückt wird? Warum benutzt man sogar f1, was ist der Punkt von f1? i dont get es –

+0

Das Programm zeichnet Punkte unabhängig davon, ob F1 gedrückt wird, es ist nur, dass, wenn Sie F1 gedrückt halten, ein Rahmen um die Punkte sein wird – user7115764

Antwort

1

Add Formularfeld:

bool F1Pressed; 

zu KeyUp Ereignishandler Abonnieren:

private void Form1_KeyUp(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.F1) 
     F1Pressed = false; 
} 

Ihre KeyDown Methode sollte wie folgt aussehen:

private void Form1_KeyDown(object sender, KeyEventArgs e) 
{ 
    switch (e.KeyCode) 
    { 
     case Keys.F1: 
      F1Pressed = true; 
      break; 
     case Keys.Left: 
      if (F1Pressed) 
      { 
       // draw dot with border 
      } 
      else 
      { 
       // draw dot without border 
      } 
      break; 
     case Keys.Right: 
      if (F1Pressed) 
      // and so on 
    } 
} 
+0

ich danke Ihnen sehr! es funktioniert perfekt – user7115764

Verwandte Themen