簡體   English   中英

Keydown事件如何使用熱鍵收聽

[英]Keydown event how to listen with hotkey

我已經將ctrl +注冊為熱鍵,並且我想在按下熱鍵時顯示一個窗口,而不是釋放leftctrl鍵並切換`鍵來執行其他操作,就像alt + tab切換應用程序一樣。這是代碼。

private void ListOnKeyDown(object sender, KeyEventArgs e)
{
    if (e.SystemKey==Key.LeftCtrl && e.Key == Key.Oem3)
    {
        m_host.SelectNext();
    }
}

但是我發現這種方式只能觸發一個鍵,那么觸發鍵事件的正確方法是什么?

這是調試信息。 調試信息

只需更改您的keydown事件以這種方式檢測修改器

private void ListOnKeyDown(object sender, KeyEventArgs e)
{
    if (Keyboard.Modifiers == ModifierKeys.Control && e.Key == Key.Oem3)
    {
        m_host.SelectNext();
        e.Handled = true;
    }      
}

在此處輸入圖片說明

因為onKeyDown事件僅適用於一個鍵,所以為了同時使用兩個鍵,您幾乎不需要即興創作:

bool firstkeyisOn = false;
private void ListOnKeyDown(object sender, KeyEventArgs e)
{
    if (e.SystemKey==Key.LeftCtrl/*Or other key by choice*/)
    {
        firstkeyisOn = true;
        e.Handled = true;
        return;
    }
    if(firstkeyisOn  && (e.Key == Key.Oem3/*Or other key by choice*/))
    {
        m_host.SelectNext();
    }
}

private void ListOnKeyUp(object sender, KeyEventArgs e)
{
    if (e.SystemKey==Key.LeftCtrl/*Key must be same as holding one*/)
    {
        firstkeyisOn = false;
    }
    //or
    //firstkeyisOn = false;
}

要取消熱鍵模式,只需在OnKeyUp事件下添加firstkeyisOn = false即可。

暫無
暫無

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

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