私が欲しいのはこのようなものです
を押すとArrow Key down、たとえば、button1
クリックのアクションを実行します
ArrowKeyDown = button1.Click
それを行うことで、私の画像をクリックして、私のpicturebox
. right
上に行く場合も同様ですleft
。
button1.Click からすべてのコードを取得し、別の関数に配置します。
次に、button1.Click と key Down イベントから関数を呼び出すことができます。
サブルーチンを呼び出す前に、キーダウン内で if ステートメントと e.KeyCode を使用して、正しいキーがあることを確認する必要があります。
コードが次のようになっている場合
private void button1_Click(object sender, EventArgs e)
{
//do something here
}
これからはもっとこうなる
private void doSomething()
{
//do something here
}
private void button1_Click(object sender, EventArgs e)
{
doSomething();
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Down)
{
doSomething();
}
else if(e.keyCode==Keys.Right)
{
doSomethingElse();
}
//etc.etc
}
キー ダウン イベントのもう 1 つのクリーンな方法は、switch ステートメントを使用することです。
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.Down:
doSomething();
break;
case Keys.Right:
//do Something Else
break;
case Keys.Up:
//do Something Else
break;
case Keys.Left:
//do Something Else
break;
default:
//they hit a key you did not handle
break;
}
}
あなたは使用しようとしてForm.KeyPreview
いますが、これを使用する前に、フォームのプロパティを設定する必要があり、を使用してこれを達成できるKeyPreview = true
と述べましたButton Click
.PerformClick Method
private void Form1_Load(object sender, EventArgs e)
{
this.KeyPreview = true;
this.KeyDown += new KeyEventHandler(Form1_KeyDown);
button1.Click += new EventHandler(button1_Click);
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.Left:
button1.PerformClick();
break;
case Keys.Right:
button1.PerformClick();
break;
case Keys.Down:
button1.PerformClick();
break;
case Keys.Up:
button1.PerformClick();
break;
}
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("Okay");
}