私は矢印で移動することができる単純なアプリケーションを作ろうとしています。これまでは、ユーザーがProcessCmdKey()メソッドを上、下、左と右に移動できるように管理していました。矢印キーを検出 - 複数のキーを一度に
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.Up)
{
statek.Y--;
return true;
}
if (keyData == Keys.Left)
{
statek.X--;
return true;
}
if (keyData == Keys.Right)
{
statek.X++;
return true;
}
if (keyData == Keys.Down)
{
statek.Y++;
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
問題は、私はユーザーに斜めにも行きたいと思っています。同時に、同じように。私はいくつかの解決策を探そうとしましたが、不幸にも運がありません。 私はそれを変更しようとすると、左/右のキーを回転/回転させるので、上のキーは「上へ」ではなく「上へ」であることを意味します。しかしまず第一に、2つのキーを一度に作る必要があります。
ですから、対角線上を移動するには、2つのキーを同時に使用することができますか?
PS。 Atm、私はピクチャボックス上の楕円を動かして、Point statek = new Point(250, 470);
コードを変更するので、タイマーがきつくなるたびに、XまたはYが変更されたかどうかを確認し、新しい場所に描画します。頻繁にダニ - これは私が今リアルタイムの動きを達成しようとした方法です。それは複雑なアプリケーションではありません。
これは良い答えです。 –
機能しません、キーは繰り返しを停止します。タイマーが必要です。 –
@ハンスはい、あなたは絶対に正しいです。 Windowsは、最後に押されたキーのWM_KEYDOWNメッセージを送信します。このキーを離すと動きが止まります。タイマーは確かにこのような状況で役に立ちますが、タイマーを使用する場合は、PinvokeをGetKeyboardStateに使用することになります。 –