如何防止如果用戶按下其中一個箭頭鍵,窗體上的按鈕將被聚焦?
我正在編程一個小遊戲,所以這會阻止用戶移動。對於模糊的解釋抱歉。通過箭頭鍵點擊防止按鈕被聚焦
編輯:
球員是在它的圖形一個PictureBox
由移動:
private async void Form1_KeyDown(object sender, KeyEventArgs e)
如何防止如果用戶按下其中一個箭頭鍵,窗體上的按鈕將被聚焦?
我正在編程一個小遊戲,所以這會阻止用戶移動。對於模糊的解釋抱歉。通過箭頭鍵點擊防止按鈕被聚焦
編輯:
球員是在它的圖形一個PictureBox
由移動:
private async void Form1_KeyDown(object sender, KeyEventArgs e)
在你Form.cs
覆蓋ProcessCmdKey
這樣的:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (!msg.HWnd.Equals(Handle) &&
(keyData == Keys.Left || keyData == Keys.Right ||
keyData == Keys.Up || keyData == Keys.Down))
return true;
return base.ProcessCmdKey(ref msg, keyData);
}
這是「WM_GETDLGCODE」的WinForms等價物?是的,我衷心贊同。 – Medinoc
處理這種情況的一種方法是設置form.KeyPreview = true
(參見MSDN),然後處理在按鍵響應/ KeyDown事件處理程序的按鍵:報價MSDN的按鍵事件
:
僅在窗體級別處理鍵盤事件,而不是讓其他控件接收鍵盤事件,設置將事件處理方法中的KeyPressEventArgs.Handled屬性的 事件處理方法設置爲true。
測試在您keysEvent箭頭,管理交給他們處理你需要的方式和設定= true來避免違約行爲(將焦點移至下一個控件)
不,不會工作。現在它已經從一開始就將焦點集中在了按鈕上。 –
應的按鈕都集中?即你想讓焦點總是保持形式而不是任何按鈕? –
@IvanStoev Jup,這將是我的期望,但你應該仍然能夠隨時按下他們。 –
看到這個http://stackoverflow.com/questions/32823525/how-to-stop-pressing-button-using-keyboard-keys-like-spacebar-or-enter-c-shar/32825190#32825190 –