簡體   English   中英

方向鍵的使用

[英]Use of Arrow Keys

我想要的是這樣的

例如,通過按下箭頭鍵button1執行點擊操作

ArrowKeyDown = button1.Click ,並通過這樣做,點擊我的形象在我把所有picturebox 與同為往上走, rightleft

從button1中獲取所有代碼。單擊並將其放在單獨的函數中。

然后您可以從button1.Click和按鍵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
}

按鍵事件的另一種更干凈的方法是使用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但是在使用它之前,您必須設置Form 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");
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM