在C#Winform编程中,合理的设计程序热键,使视障用户更加便捷使用
我们都知道,视障人士使用电脑主要是借助屏幕阅读器的朗读和操作,这种辅助操作基本都是通过键盘操作来完成的
在程序设计中,一款优秀的软件,不仅要有好的功能,可以解决用户的实际问题,而且也需要考虑如何能让用户更加高效便捷的使用
例如,窗口界面上有许多控件,那么我们不仅要考虑这些控件视障用户是否可以操作,而且也需要考虑如何能让视障用户更高效便捷的使用这些控件功能
在C#winform程序开发中,我们可以通过合理设计程序的热键,通过按下对应热键,执行相应的功能,让键盘操作更加便捷,可使操作的时间大大减少
这种操作尤其对于现如今许多视障人士通过互联网进行办公的场景,可起到事半功倍的作用
提升工作效率,使工作更加高效
下面总结了c#winform编程中四种常用的设置热键的方式
Alt+*(按钮快捷键)
在button、label、menuStrip,ToolStripMenuItem等控件设置Text属性时在名称后边加(键名(,例如button1.text="用户登陆(L)"
就可为button1设置快捷键,这时候按Alt+L就可执行用户登陆事件
窗体的按键事件
在WinForm中设置要使用组合键的窗体的KeyPreview(向窗体注册键盘事件)属性为True
然后使用窗体的KeyDown事件(在首次按下某个键时发生)
实例代码:privatevoidForm1_KeyDown(objectsender,KeyEventArgse){if(e.KeyData==(Keys.S
Keys.Alt))//按下alt+s键{e.Handled=true;//将Handled设置为true,指示已经处理过KeyPress事件textBox1.Focus();//将键盘焦点聚焦到textBox1控件上。}elseif(e.KeyData==(Keys.X
Keys.Alt))//按下alt+x{e.Handled=true;this.showMsg("helloworld!");//执行showMsg方法}elseif(e.KeyData==Keys.Escape)//按下esc键this.Close();//关闭窗口}//注:可以参考”Keys”的枚举参数,以实现自己需要的按键
ToolStripMenuItem控件的ShortcutKeys属性
在ToolStripMenuItemShortcutKeys属性中也可设置快捷键
在窗体工具箱添加一个contextMenuStrip1,将其邦定到ListView1上,给contextMenuStrip1的items添加一个ToolStripMenuItem
然后设置ToolStripMenuItem的ShortcutKeys属性
例如设置为“Ctrl+L”,此时按下Ctrl+L就可激活ToolStripMenuItem的click事件
全局快捷键
实例代码:
publicclassHotKey//定义注册和卸载热键的类{[DllImport("kernel32.dll")]publicstaticexternuintGetLastError();//如果函数执行成功,返回值不为0。//如果函数执行失败,返回值为0。要得到扩展错误信息,调用GetLastError。[DllImport("user32.dll",SetLastError=true)]publicstaticexternboolRegisterHotKey(IntPtrhWnd,//要定义热键的窗口的句柄intid,//定义热键ID(不能与其它ID重复)intfsModifiers,//辅助键,不设置=0,Alt=1、Ctrl=2、Shift=4、Windows=8Keysvk//定义的热键);[DllImport("user32.dll",SetLastError=true)]publicstaticexternboolUnregisterHotKey(IntPtrhWnd,//要取消热键的窗口的句柄intid//要取消热键的ID);}//定义消息相关的常量privateconstintWM_HOTKEY=0x;//窗口消息-热键privateconstintWM_CREATE=0x1;//窗口消息-创建privateconstintWM_DESTROY=0x2;//窗口消息-销毁privateconstintkeyID=0x;//热键ID//重写窗体的WndProc函数,在窗口创建的时候注册热键,窗口销毁时销毁热键protectedoverridevoidWndProc(refMessagem){base.WndProc(refm);switch(m.Msg){caseWM_HOTKEY://窗口消息-热键IDswitch(m.WParam.ToInt32()){casekeyID://热键IDthis.openMsg();//按下Ctrl+alt+m执行的方法break;default:break;}break;caseWM_CREATE://窗口消息-创建HotKey.RegisterHotKey(Handle,keyID,3,Keys.M);//设置Ctrl+alt+m热键break;caseWM_DESTROY://窗口消息-销毁HotKey.UnregisterHotKey(Handle,keyID);//销毁热键break;default:break;}}
本次文章分享结束,希望程序员们在程序设计中能更多的融入无障碍因素,让每个软件都能有更好的无障碍体验
-END-评论写留言,你的意见很重要往期文章
盲道处处是陷阱,今天你敢走盲道吗?盲人能否独自乘坐飞机?盲人也能“看电视”?无障碍智能电视来了!
产品信息无障碍反馈不完全攻略扫描下方