zoukankan      html  css  js  c++  java
  • WPF 快捷键(窗体)

    前言:在WPF项目开发当中,遇到了需要用到快捷键的需求,于是对热键做了一个快速学习,但是这方面的资源很少。。。


     热键大致分为三种场景,下面用QQ的使用场景举例:

    全局热键:QQ的Ctrl+Alt+A截图

    焦点热键:QQ消息栏的Shift+Enter文本换行

    窗体热键:Alt+F4关闭QQ的窗口。

    在WPF当中,全局热键焦点热键都可以轻松实现,下面我只对窗体热键进行讲解。

    第一步:右键项目根目录 引用 —> 管理Nuget程序包 —> 搜索NHotkey.Wpf并下载安装

    注册命令推荐加在Window(Page和UserControl中需要鼠标点击焦点后才能触发热键)废话少说,看代码:

    XAML中:

        <Window.Resources>
            <RoutedUICommand x:Key="WinKeyDown" Text="F1" />
            <!--WinKeyDown是静态资源名,F1是你的热键的代名词(随便起)用来后台接收-->
        </Window.Resources>
        <Window.InputBindings>
            <KeyBinding Gesture="F1" Command="{StaticResource WinKeyDown }" HotkeyManager.RegisterGlobalHotkey="True"/>
            <!--F1是键盘上的热键,核心属性HotkeyManager.RegisterGlobalHotkey="true" 加入即可无需焦点就可以触发热键,也不会发生全局热键的情况-->
        </Window.InputBindings>
        <Window.CommandBindings>
            <CommandBinding Command="{StaticResource WinKeyDown}"
                       CanExecute="CommandBinding_CanExecute"/>
            <!--CanExecute触发事件-->
        </Window.CommandBindings>

    后台代码:

            //窗体热键
            private void CommandBinding_CanExecute(object sender, CanExecuteRoutedEventArgs e)
            {
                switch (((System.Windows.Input.RoutedUICommand)e.Command).Text) 
                {
                    case "F1":
                        MessageBox.Show("deep dark fantasy");
                        break;
                    default:
                        return;
                }
            }

    就是这样,现在即使你的应用程序没有焦点,热键绑定的命令也将被调用。

    就可以实现Ctrl+S保存,F5刷新等下意识操作。

    搬运转发请链接注明出处。

  • 相关阅读:
    P1162 填涂颜色
    P1238 走迷宫
    U68364 _GC滑迷宫
    P4783 【模板】矩阵求逆
    P2613 有理数取余
    koa1链接mongodb
    koa的跨域访问
    mongodb 降序
    mongodb 分页(limit)
    mongodb 查询数据
  • 原文地址:https://www.cnblogs.com/Stay627/p/12134195.html
Copyright © 2011-2022 走看看