0

私が欲しいのはこのようなものです

を押すとArrow Key down、たとえば、button1クリックのアクションを実行します

ArrowKeyDown = button1.Clickそれを行うことで、私の画像をクリックして、私のpicturebox. right上に行く場合も同様ですleft

4

2 に答える 2

1

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;
    }

}
于 2013-02-20T02:51:44.743 に答える
0

あなたは使用しようとして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");
    }
于 2013-02-20T03:33:13.007 に答える