C#で複数のキーが押されたかどうかを検出するソリューションを探しました。 私は2人のプレイヤーとこのゲームを持っており、キーを押して移動させるかどうかを検出する必要があります。 (私はC#フォームを使用しています) 私は、2つのキーが同時に押されていて、助けにならなかった場合に検出する答えを見つけました。キーがKeyPressed(C#)を使用して押されたかどうかを検出する方法複数のキーがC#フォームで押されているかどうかを検出する方法
--EDIT--
C#で複数のキーが押されたかどうかを検出するソリューションを探しました。 私は2人のプレイヤーとこのゲームを持っており、キーを押して移動させるかどうかを検出する必要があります。 (私はC#フォームを使用しています) 私は、2つのキーが同時に押されていて、助けにならなかった場合に検出する答えを見つけました。キーがKeyPressed(C#)を使用して押されたかどうかを検出する方法複数のキーがC#フォームで押されているかどうかを検出する方法
--EDIT--
問題の原因は、この単純な要求は単にWinformsの下ではサポートされていないことです。
奇妙な音ですか?そうです。 WinFormsはしばしばハードウェアレイヤーの近くにありますが、これは時には面白いかもしれませんが、それは単なるピタかもしれません。
(ハンスによる隠れたヒントの1つ:KeyUp
であなたが好きなあなたに多くのキーを追跡することができるようにキーがリリースされました...))
しかし、今desn't周りbools
の束を維持し、KeyDown
でそれらを管理する必要が直接解決のためにとKeyUp
イベント..:Keyboard.IsKeyDownと入力してください。このようなことでは
コードは動作します:
は、キーが押されているかどうかを判断するために
Keyboard.IsKeyDown
を使用します。e
は、KeyEventArgs
のインスタンスです。もちろんif (Keyboard.IsKeyDown(Key.Return)) { btnIsDown.Background = Brushes.Red; } ...
することができますだけでなく、複数のキーのCECK:
if (Keyboard.IsKeyDown(Key.A) && Keyboard.IsKeyDown(Key.W)) ...
唯一の要件は、あなたがWPF
からこれを借りることです:
まず:
:名前空間を追加します。using System.Windows.Input;
次に:2つの参照プロジェクトにences:
PresentationCore
WindowsBase
は今、あなたはKeyPress
イベントを含め、いつでもキーボードをテストすることができます。..たぶん、コンソールに印刷するための
あなたは、プログラムレベルのキーボードフックを使用してそれを達成することができます。 user32.dllにSetWindowsHookExのようなWin-API関数を使用できます。ここ
は、それのいくつかの例は、次のとおり
A Simple C# Global Keyboard Hook
申し訳ありませんが、助けにはなりませんでした。 –
この例では、keyUpイベントとのKeyDown検出を覆っています。
私はそれを試しましたが、同時に2つのキー**を押した場合、検出できないので動作しません**。 –
...
if (Input.GetKeyDown(KeyCode.G)) {print ("G key pressed");}
これはおそらく役に立ちます:http://stackoverflow.com/a/709641/3195195 –
@jeffrycopps申し訳ありませんが、それは助けにはならなかった、答えは私にどのように検出するかを教えてくれるfキーを押さなくても、選択したキーがすべて押されます。 –
あなたの質問はうまくできませんでした。押されて押されているキーは同じですね。 –