簡體   English   中英

覆蓋某些關鍵事件的Windows Forms默認行為

[英]Overriding Windows Forms default behavior for some key events

我用一個簡單的游戲創建了一個Form 游戲需要箭頭鍵等的輸入,但是我在窗體上放置的一些按鈕正在竊取這些鍵事件。

據我了解,這是任何Windows Forms應用程序的默認行為,以便用戶能夠在各個控件之間更改焦點。

我的問題是,如何解決這個問題並確保可以使用這些鍵的輸入?

您可以重寫Form.ProcessCmdKey方法,以便能夠處理用戶的每次按鍵操作。

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    if (keyData == Keys.Down || keyData == Keys.Up)
    {
        // Process keys

        return true;
    }

    return base.ProcessCmdKey(ref msg, keyData);
}

返回true信號表示不應再執行進一步的處理,並且鍵的默認行為不會有任何影響。 例如,您將不再能夠使用TAB鍵在控件之間移動焦點,因此您可能應該只對僅由游戲處理的按鍵返回true。

重寫窗體的OnKeyDown方法。 並且不要忘了最后調用base.OnKeyDown。

暫無
暫無

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

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