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

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

dgx6664个月前 (03-14)文章中心20

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编程中合理地设计程序热键?” 的相关文章

非常实用!AutoCAD辅助绘图从新手到高手

【光盘内容】282个本书素材及效果文件,168个本书同步高清视频,600分钟超长播放的多媒体视听教学光盘,2本畅销书视频及素材文件超值赠送(2.11GB)。它是与图书完美结合的视听课堂,让您像看电视一样轻松、直观地进行学习。【主要内容包括】绘制二维图形使用辅助工具精确绘图编辑二维图形对象设置与管理图...

cad比例因子是什么意思?如何设置和修改?

有网友询问cad比例因子的含义。在cad教程中,有关于修改比例因子的相关内容,也有关于cad修改图形比例的内容。然而,对于一些初学者来说,可能不清楚cad比例因子的含义以及如何修改它。这里天正CAD林老师会给你详细分析cad中的比例因子是什么意思,具体内容如何修改。一、cad比例因子是什么意思?比例...

怎么把备忘录放桌面 怎么在桌面显示备忘录便签里的内容

手机上自带的备忘录app是很多人都使用过的一款软件,以iPhone为例,自从iOS系统升至iOS14版本以来,就新增了桌面小组件功能。为了方便自己的使用,提高查看内容的效率,怎么把备忘录放桌面?怎么在桌面显示备忘录便签里的内容?要想在iOS14及以上版本的iPhone手机桌面上摆放备忘录很简单,首先...

计算机中丢失 msvcr110.dll怎么修复?

在很多时候计算机安装软件的时候都需要如果没有找到依赖的链接库就会报错,比如常见的“系统错误——无法启动此程序,因为计算机丢失msvcr110.dll。尝试重新安装程序以解决问题”。但是很多小伙伴不知道怎么安装,这里就说一下msvcr110.dll的安装过程。一、直接下载msvcr110.dll直接百...

如何才能激活office2010?Office 2010安装及激活的详细图文教程

现在office办公用得比较多的还是office 2010,但是有很多的小伙伴不知道怎么安装和激活,我把自己的一套方法共享给大家,希望可以帮到各位小伙伴们,不走冤枉路,我还是以图片文字的形式展示出来。第一步、安装方法首先下载microsoft Office2010,然后将下载的office2010压...

看尚CANTV 42吋智能电视:618特惠999元 看球首选

2016体育大年已经步入巅峰,欧洲杯、美洲杯激战正酣,马上,里约奥运会也将盛大开幕,如此丰盛的赛事大餐,没有一台超清大电视岂不是辜负。随着6月18日的临近,电商年中大促亟待爆发,其中电视的促销力度非常大,各大厂商纷纷出招,看尚CANTV更将42吋智能电视(C42S)压到了千元以内,十分划算。美·航空...