1

ユーザーが UP + RIGHT + A を押したときにタスクを実行する必要があります。

UP 、 RIGHT 、および A のそれぞれには、3 つすべてが独自の異なる機能を持っています。一緒に押すとすべてが発生するはずですが、残念ながら、を使用して実行しようとすると、KeyDownAのみが実行されます:-(

とにかくKeyDown何か他のものを使ってそれを行うか、他の方法はありますか??

上、右、A はキーボード ボタンです。

このコードは機能していません:-

if (e.Key == VirtualKey.Up ) {
           ....
}
if(e.key == VirtualKey.Down) {
            .....   
}
if(e.key == VirtualKey.A) {
             ...
}

...

 
4

1 に答える 1

1

はKeyEventArgseのインスタンスであり、したがって 1 つのキーのみを表すため、もちろん機能しません。ただし、同時であってもキーが押されるたびに KeyDown イベントが呼び出されると思います。したがって、次のことを行う必要があります。

  1. たとえば、リストなどのキーの IEnumerable を作成します。
  2. KeyX イベントを介して制御できる、少なくとも 1 つのキーが押されているかどうかを示す bool を作成します。それについて助けが必要な場合は、コメントしてください。
  3. KeyDown イベントで、そのリストに e.key を追加し、値が false に設定されたらクリアします

現在保持されているすべてのキーを含むリストが作成され、それを使用して複数のキー押下を確認できます。コード例が必要な場合は、追加します。

于 2013-07-26T18:16:02.123 に答える