首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#下怎么设置双快捷键

2011-12-22 
C#下如何设置双快捷键?例如,用户按下“Ctrl+J”,就相当于按下Button1.C#如何实现?[解决办法]在KeyPress事件

C#下如何设置双快捷键?
例如,用户按下“Ctrl+J”,就相当于按下Button1.

C#如何实现?

[解决办法]
在KeyPress事件中判断,如果Ctrl和J键的状态都是Pressed,就调用Button1的Click事件
[解决办法]
如果是菜单项 可以直接指定
[解决办法]
LZ是想在窗体中无论焦点在哪个控件上都会响应这个热键吗?那就重写Form的 bool ProcessDialogKey(Keys) 方法

C# code
        protected override bool ProcessDialogKey(Keys keyData)        {            if (keyData == (Keys.Control | Keys.J))            {                Button1.PerformClick();                return true;            }            return base.ProcessDialogKey(keyData);        }
[解决办法]
protected override void OnKeyDown(KeyEventArgs e)
{
if (e.Control && e.KeyCode == System.Windows.Forms.Keys.J)
{
this.button1.click(sender e);
}
base.OnKeyDown(e);
}
[解决办法]
窗体的KeyDown事件:
private void Game_KeyDown(object sender, KeyEventArgs e)
{
// F1快捷控制开始
if (e.KeyCode == Keys.F1)
{
button1.PerformClick();
}
}
[解决办法]
学习中
[解决办法]
keyDown在这里应该不行的,感觉应该重写ProcessDialogKey方法

protected override bool ProcessDialogKey(Keys keyData)
{
if (keyData == Keys.Control | Keys.J)
{
...处理
return true;
}
return base.ProcessDialogKey(keyData);
}
[解决办法]
噢,少了个括号:
if (keyData == (Keys.Control | Keys.J))
[解决办法]
如果想要在windows的任何地方使用热键都有效,最好是使用api函数 RegisterHotKey() 具体方法在网上查查吧
[解决办法]
mark
[解决办法]
热键参考
http://blog.csdn.net/jinjazz/archive/2007/11/15/1886055.aspx

热点排行