2011-03-29 49 views
3

我正在爲PTZ開發一個應用程序,我已經採用了一個網格,並且當我按向上箭頭鍵,然後在UP Arroa鍵的KeyDown事件中,我開始了我的動作並在KeyUp即使即時停止運動。但是,當我推箭頭鍵,它的KeyDown事件被調用,然後焦點被移動到另一個控件,所以它的KeyUp不會被調用....所以我想停止箭頭鍵上的這個焦點運動,這樣我就可以得到兩個事件... ..那麼該怎麼做。焦點不應該在C#中的箭頭鍵上移動

回答

1

我想你可以重寫它。

這可能幫助: How to disable navigation on WinForm with arrows in C#?

+0

他沒有使用WinForms(問題被標記爲WPF),所以事件是不一樣的。有趣的是,雖然有預覽事件。 – 2011-03-29 21:01:29

+1

這不是我的意圖,讓任何問題看起來更好或更糟。答案可以站在自己的優點。但是你的回答確實讓人們對WPF中處理這種情況採取了類似但不正確的方法,我覺得這種澄清值得評論。 – 2011-03-30 23:09:11

+0

這是什麼(弱調味汁)打算與否。 – capdragon 2011-03-31 13:23:11

0

如下您可以使用此代碼段從Diamonddrake: 粘貼片段在窗體的身體如其他方法

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
     { 
      if ((keyData == Keys.Right) || (keyData == Keys.Left) || 
       (keyData == Keys.Up) || (keyData == Keys.Down)) 
      { 
       //Do custom stuff or nothing. 
       //true if key was processed by control, false otherwise 
       return true; 
      } 
      else 
      { 
       return base.ProcessCmdKey(ref msg, keyData); 
      } 
     } 

注意,對於像組合框和一些控件,用上下鍵滾動起來在項目之間放置,可能是必要的,所以如果你想利用它們,刪除這部分片段(keyData == Keys.Up) || (keyData == Keys.Down)

相關問題