如何在Windows应用商店应用中创建键盘快捷键(如Ctrl + C)

非常

我想在我的应用程序中创建键盘快捷键,例如用于复制的Ctrl+ C另外,如果TextBox具有焦点,我也想忽略该快捷方式。

非常

首先,您需要一种方法来检查是否按下了控制键。CoreWindow.GetKeyState可以完成这项工作,但使用起来可能有些棘手,所以我创建了一个帮助器类:

public class ModifierKeys
{
    #region ShiftIsDown property

    public static bool ShiftIsDown 
    { 
        get
        {
            return (Window.Current.CoreWindow.GetKeyState(VirtualKey.Shift) & CoreVirtualKeyStates.Down) != 0;
        }
    }

    public static bool OnlyShiftIsDown 
    { 
        get
        {
            return ShiftIsDown && !AltIsDown && !ControlIsDown;
        }
    }

    #endregion

    #region AltIsDown property

    public static bool AltIsDown
    {
        get
        {
            return (Window.Current.CoreWindow.GetKeyState(VirtualKey.Menu) & CoreVirtualKeyStates.Down) != 0;
        }
    }

    public static bool OnlyAltIsDown
    {
        get
        {
            return !ShiftIsDown && AltIsDown && !ControlIsDown;
        }
    }

    #endregion

    #region ControlIsDown property

    public static bool ControlIsDown
    {
        get
        {
            return (Window.Current.CoreWindow.GetKeyState(VirtualKey.Control) & CoreVirtualKeyStates.Down) != 0;
        }

    }

    public static bool OnlyControlIsDown
    {
        get
        {
            return !ShiftIsDown && !AltIsDown && ControlIsDown;
        }
    }

    #endregion

    #region NoModifierKeyIsDown property

    public static bool NoModifierKeyIsDown
    {
        get
        {
            return !ShiftIsDown && !AltIsDown && !ControlIsDown;
        }
    }

    #endregion
}

现在,OnNavigateTo/From在页面中,订阅/取消订阅按键事件:

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        /*...*/
        Window.Current.CoreWindow.KeyDown += CoreWindow_KeyDown;
    }

    protected override void OnNavigatedFrom(NavigationEventArgs e)
    {
        /*...*/
        Window.Current.CoreWindow.KeyDown -= CoreWindow_KeyDown;
    }

CoreWindow_KeyDown项目就会看起来是这样的:

void CoreWindow_KeyDown(CoreWindow sender, KeyEventArgs args)
{
    var focusedElement = FocusManager.GetFocusedElement();

    if (args.KeyStatus.WasKeyDown == false && ModifierKeys.OnlyControlIsDown &&
        !(focusedElement is TextBox)
        )
    {
            if (args.VirtualKey == VirtualKey.X)
            {
                /*...cut...*/
            }
            else if (args.VirtualKey == VirtualKey.V)
            {
                /*...paste...*/
            }
            else if (args.VirtualKey == VirtualKey.C)
            {
                /*...copy...*/
            }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Xubuntu 14.04上重新映射Ctrl + C和Ctrl + V的键盘快捷键?

来自分类Dev

setxkbmap,非拉丁版式和键盘快捷键(如Ctrl-C)

来自分类Dev

将键盘快捷键添加到 C 中的控制台应用程序

来自分类Dev

如何在Firefox中禁用Ctrl + Shift + C快捷键?

来自分类Dev

在C#中重新分配Windows默认键盘快捷键?

来自分类Dev

如何在Win表单应用程序(如CTRL + C,CTRL + W)中检测两个热键

来自分类Dev

使用Ctrl +字符键盘快捷键时,为什么终端中会出现^ C,^ V等?

来自分类Dev

使用Ctrl +字符键盘快捷键时,为什么终端中会出现^ C,^ V等?

来自分类Dev

Windows应用商店-XAML C#-如何在代码中访问Page.Resource

来自分类Dev

如何在C#中将自定义快捷键设置为ctrl +Ç(ç是土耳其字符)

来自分类Dev

如何在Caliburn.Micro中实现应用程序键盘快捷键

来自分类Dev

如何在ubuntu 13.10中为新应用程序分配键盘快捷键

来自分类Dev

如何在Windows应用商店应用中检测用户是否已停止使用C#行走?

来自分类Dev

Visual Studio C ++和C#的键盘快捷键

来自分类Dev

如何在键盘应用程序中完成输入键盘快捷键对话框?Ubuntu 18.04

来自分类Dev

操作系统键盘快捷键与GNOME 3中的应用键盘快捷键冲突

来自分类Dev

操作系统键盘快捷键与GNOME 3中的应用键盘快捷键冲突

来自分类Dev

如何在Windows应用商店应用中本地化通知和组合框?(C#/ XAML,多语言应用程序工具包)

来自分类Dev

Windows应用商店应用程序C#中的异步

来自分类Dev

更改bash快捷键,例如Ctrl-C?

来自分类Dev

如何在Windows应用商店C#中读取mp3文件的每分钟节拍标记?

来自分类Dev

如何使用键盘快捷键启动应用程序?

来自分类Dev

在Angular应用中实现键盘快捷键

来自分类Dev

如何在Sublime Text中执行Ctrl +,f键盘快捷键?

来自分类Dev

如何在Flutter桌面应用程序中注册全局键盘快捷键?

来自分类Dev

如何阻止发送到 Windows 应用程序的键盘快捷键?

来自分类Dev

是否可以在Linux中配置(确实)全局键盘快捷键(如ctrl + alt + fN)?

来自分类Dev

如何在C#Windows窗体应用程序中动态创建网格

来自分类Dev

如何在C#Windows窗体应用程序中创建平滑的形状动画运动?

Related 相关文章

  1. 1

    如何在Xubuntu 14.04上重新映射Ctrl + C和Ctrl + V的键盘快捷键?

  2. 2

    setxkbmap,非拉丁版式和键盘快捷键(如Ctrl-C)

  3. 3

    将键盘快捷键添加到 C 中的控制台应用程序

  4. 4

    如何在Firefox中禁用Ctrl + Shift + C快捷键?

  5. 5

    在C#中重新分配Windows默认键盘快捷键?

  6. 6

    如何在Win表单应用程序(如CTRL + C,CTRL + W)中检测两个热键

  7. 7

    使用Ctrl +字符键盘快捷键时,为什么终端中会出现^ C,^ V等?

  8. 8

    使用Ctrl +字符键盘快捷键时,为什么终端中会出现^ C,^ V等?

  9. 9

    Windows应用商店-XAML C#-如何在代码中访问Page.Resource

  10. 10

    如何在C#中将自定义快捷键设置为ctrl +Ç(ç是土耳其字符)

  11. 11

    如何在Caliburn.Micro中实现应用程序键盘快捷键

  12. 12

    如何在ubuntu 13.10中为新应用程序分配键盘快捷键

  13. 13

    如何在Windows应用商店应用中检测用户是否已停止使用C#行走?

  14. 14

    Visual Studio C ++和C#的键盘快捷键

  15. 15

    如何在键盘应用程序中完成输入键盘快捷键对话框?Ubuntu 18.04

  16. 16

    操作系统键盘快捷键与GNOME 3中的应用键盘快捷键冲突

  17. 17

    操作系统键盘快捷键与GNOME 3中的应用键盘快捷键冲突

  18. 18

    如何在Windows应用商店应用中本地化通知和组合框?(C#/ XAML,多语言应用程序工具包)

  19. 19

    Windows应用商店应用程序C#中的异步

  20. 20

    更改bash快捷键,例如Ctrl-C?

  21. 21

    如何在Windows应用商店C#中读取mp3文件的每分钟节拍标记?

  22. 22

    如何使用键盘快捷键启动应用程序?

  23. 23

    在Angular应用中实现键盘快捷键

  24. 24

    如何在Sublime Text中执行Ctrl +,f键盘快捷键?

  25. 25

    如何在Flutter桌面应用程序中注册全局键盘快捷键?

  26. 26

    如何阻止发送到 Windows 应用程序的键盘快捷键?

  27. 27

    是否可以在Linux中配置(确实)全局键盘快捷键(如ctrl + alt + fN)?

  28. 28

    如何在C#Windows窗体应用程序中动态创建网格

  29. 29

    如何在C#Windows窗体应用程序中创建平滑的形状动画运动?

热门标签

归档