Detect simultaneous pressing of two keys

I have no idea how to do this.

I only know how to detect one key:

private void Form1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.C) { MessageBox.Show("C key"); } } 
+4
source share
3 answers

You should keep track of keydown / keyup events and keep a list of all the keys that are currently down. The keyboard handler can only be run on individual keys, and it depends on your code to detect / track which ones are unavailable, and if these individual keystroke events are close enough to each other to count "together."

+8
source

As you can see, you can use the timer event with a boolean to determine if two keys are pressed.

  bool keyup = false; bool keyleft = false; private void Form1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Up) { keyup = true; } else if (e.KeyCode == Keys.Left) { keyleft = true; } } private void Form1_KeyUp(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Up) { keyup = false; } else if (e.KeyCode == Keys.Left) { keyleft = false; } } private void Form1_Load(object sender, EventArgs e) { timer1.Start(); } private void timer1_Tick(object sender, EventArgs e) { if (keyleft && keyup) { Console.Beep(234, 589); } } 
+3
source

You do not need an XD timer

  bool keyup = false; bool keyleft = false; private void Form1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Up) { keyup = true; } else if (e.KeyCode == Keys.Left) { keyleft = true; } if (keyleft && keyup) { Console.Beep(234, 589); } } private void Form1_KeyUp(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Up) { keyup = false; } else if (e.KeyCode == Keys.Left) { keyleft = false; } } 
0
source

Source: https://habr.com/ru/post/1386721/


All Articles