Je ne sais pas comment cela fait cela.
Je ne sais que comment détecter une clé: p>
4 Réponses :
Vous devez suivre les événements Keydown / Keyup et conserver une liste de toutes les clés actuellement "baisse". Le gestionnaire de clavier ne peut déclencher que sur des touches individuelles et que votre code est à votre disposition de détecter / garder une trace de ceux qui sont en panne et si ces événements de clé individuelle sont suffisamment proches les uns des autres pour être comptés comme «ensemble». P >
Comme vous pouvez le constater, vous pouvez utiliser un événement de minuterie avec des booléens pour détecter si deux touches sont appuyées sur:
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); } }
Mettez un point de rupture dans votre élément de clés et appuyez simultanément sur vos deux clés.
Examiner les keydata des Keeventargs. Il vous montrera ce que vous devez utiliser pour détecter deux clés enfoncées. Utilisez un code factice comme celui-ci:
private void Form1_KeyDown(object sender, KeyEventArgs e) { MessageBox.Show("KeyData is: " + e.KeyData.Tostring()); }
Utilisez ceci:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData) string keysPressed = keyData.ToString(); // your code goes here }
De quelle manière votre réponse est-elle différente pour d'autres réponses et explicitement l'acceptée? Qu'est-ce que votre réponse contribue?
Les autres réponses nécessitent des étapes multiples et suivent plusieurs éléments. Cette solution nécessite une seule étape pour détecter lorsque les deux touches sont enfoncées en même temps. Moins complexe, plus efficace.
Définissez une clé booléenne sur la touche, puis revenez-le sur la touche, s'il est toujours défini comme vrai, cela signifiera que la clé n'a pas été levée.