Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 禁用与UWP应用程序的键盘交互_C#_Uwp_Windows 10_Win Universal App_Windows 10 Universal - Fatal编程技术网

C# 禁用与UWP应用程序的键盘交互

C# 禁用与UWP应用程序的键盘交互,c#,uwp,windows-10,win-universal-app,windows-10-universal,C#,Uwp,Windows 10,Win Universal App,Windows 10 Universal,我正在构建一个UWP应用程序,我希望禁用与我的应用程序的键盘交互。这意味着当按下键盘上的任何键时,我的应用程序都不应该以任何方式响应 这是可以实现的吗?我是否可以有选择地禁用与某些键的交互,如Tab键等。是的,您可以为此使用该类。以下几点需要注意: 您需要在appxmanifest文件中声明受限功能“inputForegroundObservation”: 您不能选择性地截取键,但您可以响应代码中的特定截取键,并使用所需的操作进行响应(例如,按下tab键时移动焦点): KeyboardDel

我正在构建一个UWP应用程序,我希望禁用与我的应用程序的键盘交互。这意味着当按下键盘上的任何键时,我的应用程序都不应该以任何方式响应

这是可以实现的吗?我是否可以有选择地禁用与某些键的交互,如Tab键等。

是的,您可以为此使用该类。以下几点需要注意:

  • 您需要在appxmanifest文件中声明受限功能“inputForegroundObservation”:
  • 
    
  • 您不能选择性地截取键,但您可以响应代码中的特定截取键,并使用所需的操作进行响应(例如,按下tab键时移动焦点):
  • KeyboardDeliveryInterceptor interceptor=KeyboardDeliveryInterceptor.GetForCurrentView();
    interceptor.isInterceptionEnabledWhenInformaleGround=true;
    interceptor.KeyUp+=委托(KeyboardDeliveryInterceptor发送方,KeyEventArgs args args)
    {
    if(args.VirtualKey==Windows.System.VirtualKey.Tab)
    {
    //执行所需的选项卡键操作
    }
    };
    

    上述代码阻止Tab按钮执行任何操作。因此,当用户按下Tab键时,不会执行任何操作。

    我的用例是禁用键盘与Tab键的交互,并正常处理其余键的输入。因此,如果我以您提到的方式使用KeyboardDeliveryInterceptor类截取所有键,我可以通过编程告诉我的应用程序正常处理来自所有其他键的输入。
    <Capabilities>
         <Capability Name="internetClient" />
         <rescap:Capability xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities" Name="inputForegroundObservation"/>
    </Capabilities>
    
    Dispatcher.AcceleratorKeyActivated += Dispatcher_AcceleratorKeyActivated;
    
    private void Dispatcher_AcceleratorKeyActivated(CoreDispatcher sender, AcceleratorKeyEventArgs args)
        {
            if(args.key == Windows.System.VirtualKey.Tab)
            {
               args.Handled = true;
            }
        }