当前位置:首页 > 文章中心 > 正文内容

如何在C#Winform编程中合理地设计程序热键?

dgx6669个月前 (03-14)文章中心60

C#Winform编程中,合理的设计程序热键,使视障用户更加便捷使用


我们都知道,视障人士使用电脑主要是借助屏幕阅读器的朗读和操作,这种辅助操作基本都是通过键盘操作来完成的


在程序设计中,一款优秀的软件,不仅要有好的功能,可以解决用户的实际问题,而且也需要考虑如何能让用户更加高效便捷的使用

例如,窗口界面上有许多控件,那么我们不仅要考虑这些控件视障用户是否可以操作,而且也需要考虑如何能让视障用户更高效便捷的使用这些控件功能


C#winform程序开发中,我们可以通过合理设计程序的热键,通过按下对应热键,执行相应的功能,让键盘操作更加便捷,可使操作的时间大大减少


这种操作尤其对于现如今许多视障人士通过互联网进行办公的场景,可起到事半功倍的作用

提升工作效率,使工作更加高效


下面总结了c#winform编程中四种常用的设置热键的方式


一、Alt + *(按钮快捷键)


在button、label、menuStrip,ToolStripMenuItem等控件设置Text属性时在名称后边加(&键名(,例如button1.text= "用户登陆(&L)"

就可为button1设置快捷键,这时候按Alt+L就可执行用户登陆事件


二、窗体的按键事件


在WinForm中设置要使用组合键的窗体的KeyPreview(向窗体注册键盘事件)属性为True


然后使用窗体的KeyDown事件(在首次按下某个键时发生)


实例代码:

private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyData == (Keys.S | Keys.Alt))//按下alt+s键
            {
e.Handled = true;//将Handled设置为true,指示已经处理过KeyPress事件
                textBox1.Focus();//将键盘焦点聚焦到textBox1控件上。
            }
            else if (e.KeyData == (Keys.X | Keys.Alt))//按下alt+x
            {
e.Handled = true;
                this.showMsg("hello world!");//执行showMsg方法
            }
            else if (e.KeyData == Keys.Escape)//按下esc键
                this.Close();   //关闭窗口  
        }

//注:可以参考 ”Keys”的枚举参数,以实现自己需要的按键


三、ToolStripMenuItem控件的ShortcutKeys属性


在ToolStripMenuItemShortcutKeys属性中也可设置快捷键

在窗体工具箱添加一个contextMenuStrip1,将其邦定到ListView1上,给contextMenuStrip1的items添加一个ToolStripMenuItem


然后设置ToolStripMenuItem的ShortcutKeys属性


例如设置为“Ctrl+L”,此时按下Ctrl+L就可激活ToolStripMenuItem的click事件


四、全局快捷键


实例代码:

public class HotKey//定义注册和卸载热键的类
        {
            [DllImport("kernel32.dll")]
            public static extern uint GetLastError();
            //如果函数执行成功,返回值不为0。
            //如果函数执行失败,返回值为0。要得到扩展错误信息,调用GetLastError。
            [DllImport("user32.dll", SetLastError = true)]
            public static extern bool RegisterHotKey(
                 IntPtr hWnd,                //要定义热键的窗口的句柄
                int id,                     //定义热键ID(不能与其它ID重复)           
                 int fsModifiers,   //辅助键,不设置=0,Alt=1、Ctrl=2、Shift=4、Windows=8
                Keys vk                     //定义的热键
                );
            [DllImport("user32.dll", SetLastError = true)]
            public static extern bool UnregisterHotKey(
                 IntPtr hWnd,                //要取消热键的窗口的句柄
                int id                      //要取消热键的ID
                 );
        }
//定义消息相关的常量
        private const int WM_HOTKEY = 0x312; //窗口消息-热键
        private const int WM_CREATE = 0x1; //窗口消息-创建
        private const int WM_DESTROY = 0x2; //窗口消息-销毁
        private const int keyID = 0x3572; //热键ID
//重写窗体的WndProc函数,在窗口创建的时候注册热键,窗口销毁时销毁热键
        protected override void WndProc(ref Message m)
        {
            base.WndProc(ref m);
            switch (m.Msg)
            {
                case WM_HOTKEY: //窗口消息-热键ID
                    switch (m.WParam.ToInt32())
                    {
                        case keyID: //热键ID
                            this.openMsg();//按下Ctrl+alt+m执行的方法
                            break;
                        default:
                            break;
                    }
                    break;
                case WM_CREATE: //窗口消息-创建
                    HotKey.RegisterHotKey(Handle, keyID, 3, Keys.M);//设置Ctrl+alt+m热键
                    break;
                case WM_DESTROY: //窗口消息-销毁
                    HotKey.UnregisterHotKey(Handle, keyID); //销毁热键
                    break;
                default:
                    break;
            }
        }


本次文章分享结束,希望程序员们在程序设计中能更多的融入无障碍因素,让每个软件都能有更好的无障碍体验。

扫描二维码推送至手机访问。

版权声明:本文由第六芝士网发布,如需转载请注明出处。

本文链接:http://www.dgx666.com/post/277.html

分享给朋友:

“如何在C#Winform编程中合理地设计程序热键?” 的相关文章

手机上方经常弹出的“HD”字母,代表着什么意思?看完涨知识了

当我们使用手机时,有时会在屏幕上方的信号栏中看到“HD”这个字母。对于不熟悉这个标识的人来说,可能会感到困惑,不清楚它到底代表着什么。今天,我们就来详细探讨一下手机信号栏中的“HD”字母,看完之后,相信你一定会觉得涨了不少知识。“HD”在手机信号栏中的出现,其实是一个好消息。它代表着你的手机支持并已...

怎么解决CAD安全系统不起作用或未正确安装?

CAD激活完后打开弹出显示安全系统(软件锁许可管理器)不起作用或未正确安装?很多人表示一头雾水,那下面就跟小编一起来解决吧!1、首先,打开电脑C盘目录。2、第二,我们要找出隐藏的文件夹ProgramData,选择 工具-文件夹选项。3、第三,弹出“文件夹选项”对话框,选择“查看”,在高级设置找到并选...

CAD如何设置打印样式?简单3步!初学者必看

很多初学CAD的小伙伴对CAD的打印设置都不熟悉,其实CAD打印也有一定的技巧,掌握一些CAD的打印技巧,可以帮助我们省下不少时间呢!那么今天小编就来跟大家分享一期关于CAD的打印技巧,小伙伴们拿好小本本记下来哦!一、打印样式设置1、打印界面首先,我们打开CAD,在CAD界面中点击打印按钮,或这按快...

分享三个CAD坐标原点和基点小技巧

CAD使用过程中,关于坐标原点和基点的三个小技巧用得着的工友,可以收藏问题 1 :重新设定的坐标原点,为什么坐标系仍在原位置。出现这种问题的原因不是未设置成功,只是显示问题。命令行输入uc调出ucs设置窗口,设置菜单下勾选“显示于ucs原点”,单击确定。即新定义的坐标原点会显示。问题 2 :怎么定义...

三款好看好用的电脑桌面便签备忘录推荐

怎么在Win电脑桌面上添加便签/备忘录显示呢?给大家介绍三款常用的桌面便签备忘录工具!1、电脑自带便笺工具:sticky notesWindows系统自带的便笺工具,英文名sticky notes,在电脑桌面上点击“开始”,即可在程序列表中找到并打开。它以一张一张的彩色便利贴呈现在桌面上,可以记录简...

四款电脑桌面好用的备忘录app推荐,可同步手机

1、sticky notes这款是Windows系统自带的备忘记事工具,中文名叫“便笺”。点击桌面左下角“开始”,在程序列表中可找到。它在电脑桌面上是以一张一张彩色便利贴展现的,可以记录简单的文字和图片,非常像纸质便利贴的电子版。可以通过Office365和手机端同步数据。2、敬业签这款是我目前一直...