どうすればいいか分かりません。同時に2つのキーが押されたときの検出
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.C)
{
MessageBox.Show("C key");
}
}
どうすればいいか分かりません。同時に2つのキーが押されたときの検出
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.C)
{
MessageBox.Show("C key");
}
}
あなたはKeyDownイベント/ keyUpイベントイベントを追跡する必要があり、現在は「ダウン」しているすべてのキーのリストを保持:
は、私は1つのキーを検出しない唯一の方法を知っています。キーボードハンドラは個々のキーでのみトリガすることができます。また、どのキーがダウンしているかを検出して追跡することは、コードに依存します。
ご覧のとおり、2つのキーが押されたかどうかを検出するにはbooleanのタイマーイベントを使用できます。まだそれがキーをしていない意味するようにtrueに設定されている場合
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);
}
}
あなたは、
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;
}
}
'if(keyleft && keyup)'条件は決して 'true'と評価されません。 –
がダウンして、キーのブール値を設定し、キーアップでそれを元に戻すタイマーXDを必要としません持ち上げられました。 – ThePower