簡體   English   中英

焦點不應該在C#中的箭頭鍵上移動

[英]Focus should not move on arrow keys in C#

我正在為PTZ開發一個應用程序,我已經采取了一個網格,當我按向上箭頭鍵然后在UP Arroa鍵的KeyDown事件我開始我的運動和在KeyUp甚至我停止運動。 但是當我按下Pres鍵時它的KeyDown事件被調用,然后焦點被移動到另一個控件,所以它的KeyUp沒有被調用....所以我想在arrowkeys上停止這個焦點運動,這樣我就可以得到這兩個事件...... ..那怎么做。

我建議您閱讀WPF路由事件系統 具體來說,如果你看一下隧道或“預覽”事件 ,你會發現你應該能夠捕獲並壓制導致你出現問題的關鍵事件。

我想你可以覆蓋它。

這可能會有所幫助: 如何在C#中使用箭頭禁用WinForm上的導航?

您可以使用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);
            }
        }

請注意,對於某些控件(如ComboBox),可能需要使用向上和向下鍵在項目之間向上和向下滾動,因此如果要使用它們,請刪除此部分代碼段(keyData == Keys.Up) || (keyData == Keys.Down) (keyData == Keys.Up) || (keyData == Keys.Down)

暫無
暫無

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

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