现在的位置: 首页 > 综合 > 正文

C# 窗体(Form)中如何实现全局快捷键 如:[Ctrl + Enter]

2018年03月20日 ⁄ 综合 ⁄ 共 1622字 ⁄ 字号 评论关闭

大家都知道Form有个AcceptButton属性.......就是绑定一个button,然后不管当前焦点在窗体(Form)的某个控件上,只要按回车就会响应相应的button事件...

this.AcceptButton = button1;  //按回车就会响应button1的Click事件

但是这个只能实现回车啊....如果想实现Ctrl + Enter或者其他的Ctrl+ XXX 怎么办呢(如:QQ一样,按Ctrl + Enter发送消息).....

很多人马上会想到用KeyDown 事件.......没用,如果焦点不在Form上..不会响应这个事件的 ,于是乎可能这个时候很多人想到了用什么API 函数实现...满世界的找相关的信息... 甚至上CSND上问..呵呵

我这里介绍的方法不用什么API函数,一看就会............可能很多人已经用过这个功能啦....知道的可以不看啊

用菜单实现MenuStrip 和 ContextMenuStrip 控件都可以实现...额,我一提到这个控件大家十七八九应该知道怎么用了吧?

拖一个菜单MenuStrip 或者ContextMenuStrip  给菜单添加一个Item...类型是ToolStripMenuItem(就是一个普通的文本),注册Click事件,如果是ContextMenuStrip 那么要绑定给Form窗体....

this.testToolStripMenuItem.Click += new System.EventHandler(this.testToolStripMenuItem_Click);

//

private void testToolStripMenuItem_Click(object sender,EventArgs e)

{

   MessageBox.Show("按啦Ctrl + Enter .......");

}

ToolStripMenuItem是有一个属性[ShortcutKeys]的专门设置快捷看的....而且这个快捷看是全局的,就是焦点不管落在那个控件上,只要按相应的快捷键都会响应相应的Click事件.....

如果在属性栏上设置ShortcutKeys属性为Ctrl + B,就是在Form1.Designer.cs文件中看到这样一段代码

this.testToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.B)));  //实现Ctrl + B键

然后的工作是你只需要隐藏testToolStripMenuItem就可以啦:  //隐藏...不要让别人看到哟....

testToolStripMenuItem.Visible = false;

这样快捷键Ctrl + XXX就实现啦..............属性栏里只选的...但是属性栏里是没有Ctrl + Enter选的...需要自己改代码

同样是Form1.Designer.cs文件里,只需要把Keys.B 改成Keys.Enter就OK

this.testToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Enter)));  //实现Ctrl + Enter 就搞定啦

提示:最好不要去设置系统自带的快捷键.......如Ctrl + A ,Ctrl + C .....这样就不响应系统的快捷键啦....如文本框里就不能全选文本等操作啦

学习博客网址,谨表谢意

http://blog.163.com/china0359%40yeah/blog/static/121719436201051062448951/

抱歉!评论已关闭.