我正在爲我的遊戲製作地圖編輯器,並使用箭頭鍵在地圖區域滾動。目前我正在使用KeyDown事件,它可以向上,向下,向左或向右滾動,但我的問題是如何允許對角線滾動。目前,如果我按住向右箭頭,然後(同時保持向右箭頭),然後按住向下箭頭,向下方向將替換向右滾動而不是向右下方滾動。如何在C#中同時檢測多個按鍵?
有沒有辦法,例如,我可以檢查在KeyDown事件中是否正在按下另一個箭頭鍵?我如何迴應多個持有的密鑰?
由於
我正在爲我的遊戲製作地圖編輯器,並使用箭頭鍵在地圖區域滾動。目前我正在使用KeyDown事件,它可以向上,向下,向左或向右滾動,但我的問題是如何允許對角線滾動。目前,如果我按住向右箭頭,然後(同時保持向右箭頭),然後按住向下箭頭,向下方向將替換向右滾動而不是向右下方滾動。如何在C#中同時檢測多個按鍵?
有沒有辦法,例如,我可以檢查在KeyDown事件中是否正在按下另一個箭頭鍵?我如何迴應多個持有的密鑰?
由於
不容易,所述第二鍵擊的鍵下停止從重複第一之一。你必須做的是記錄KeyDown事件中的關鍵字。在KeyUp事件中取消該狀態。接下來,使用定時器(〜250毫秒)並在其Tick事件中檢查鍵的狀態。
最簡單的方法是使用Windows API調用來獲取鍵盤上每個鍵的狀態,然後檢查您感興趣的鍵:GetKeyboardState via PInvoke。
您可以在KeyDown/KeyUp上調用它,檢查鍵盤的狀態並採取適當的行動。
謝謝,我考慮過這一點,但我將特定於平臺的電話保持在最低限度,以便我可以繼續提供機會以便使用Mono。 – 2010-09-12 13:15:56
乾杯,我會這樣做。 – 2010-09-12 13:16:36