簡體   English   中英

UWP:如何在 UWP 中抑制按鍵事件?

[英]UWP : How to suppress a key press event in UWP?

我有一個 winform 代碼來抑制按鍵。 這里是

if (e.KeyCode == Keys.Up || e.KeyCode == Keys.Left || e.KeyCode == Keys.Delete) {
    e.SuppressKeyPress = true;
}

我想在 UWP 中做同樣的事情並嘗試過這個

if (e.Key == Windows.System.VirtualKey.Up || e.Key == Windows.System.VirtualKey.Down || e.Key == Windows.System.VirtualKey.Delete) {
    e.SuppressKeyPress = true;
}

但是它給了我一個錯誤“KeyRoutedEventArgs”不包含“SuppressKeyPress”的定義,並且找不到接受“KeyRoutedEventArgs”類型的第一個參數的可訪問擴展方法“SuppressKeyPress”(您是否缺少 using 指令或程序集引用?

您可以通過將其標記為已處理來阻止其他處理程序處理該事件:

if (e.Key == Windows.System.VirtualKey.Up || e.Key == Windows.System.VirtualKey.Down || e.Key == Windows.System.VirtualKey.Delete)
{
    e.Handled = true;
}

true標記已處理的路由事件; false則不處理路由事件,這允許事件進一步路由。 默認值為false
-- KeyRoutedEventArgs.Handled

UWP:如何在 UWP 中抑制按鍵事件?

UWP 在KeyRoutedEventArgs中不包含SuppressKeyPress ,如果您想抑制按鍵按下,您可以檢測Window.Current.Content PreviewKeyDown事件,該事件將在您的KeyDown事件之前調用。 請嘗試以下代碼。

Window.Current.Content.PreviewKeyDown += Content_PreviewKeyDown;
private void Content_PreviewKeyDown(object sender, KeyRoutedEventArgs e)
{

    if (e.Key == VirtualKey.Left | e.Key == VirtualKey.Right | e.Key == VirtualKey.Up | e.Key == VirtualKey.Down | e.KeyCode == VirtualKey.Delete)
    {
        e.Handled = true;
    }
    else
    {
        e.Handled = false;

    }
}

暫無
暫無

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

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