winform使⽤快捷键来触发按钮事件
第⼀种⽅法。。代码复杂,操作简单的快捷键
新建⼀个空⽩窗体
每个窗体都有这样3个事件:KeyDown、KeyPress、KeyUp,KeyDown和KeyPress都是按键按下事件,但KeyDown⽤的是KeyCode跟键盘各个按键相对应,它对应Keys枚举,⽤起来⽐较⽅便;⽽KeyPress⽤的是KeyChar,这个就要ASC II编码了,不⽅便。KeyUp是按键弹起事件,不常⽤,因此我们使⽤KeyDown事件来设置窗体的快捷键,双击该事件后的空⽩⽣成代码,⾸先我们设置单个按键,让它按下F11最⼤化,再次按下还原,在事件中加⼊如下代码:
if(e.KeyCode == Keys.F11)
{
if(WindowState == FormWindowState.Maximized)
WindowState = FormWindowState.Normal;
else
WindowState = FormWindowState.Maximized;
}
若窗体的WindowState为Maximized则还原,否则最⼤化,运⾏下试试,很好⽤ :-)
下⾯在窗体中加⼊⼀个名为txtInput的TextBox,两个名为btnConfirm、btnExit的Button:
再次运⾏窗体,按下F11,不起作⽤了?这是怎么回事?
因为这时窗体运⾏后,焦点已不在窗体上,⽽在控件上了,我们要将KeyPreview设置为True,向窗体注册控件上产⽣的键盘事件,再次运⾏,问题解决了。
那么组合按键⼜怎么设置呢?例如要按下Alt和数字0,需要这样:
if(e.Modifiers == Keys.Alt && e.KeyCode == Keys.D0)
{
MessageBox.Show("按下了Alt + 0");
}
使⽤Modifiers可设置组合键,键盘数字区按键的Keys枚举以D打头,⽽⼩键盘上的数字以NumPad打头。按下Ctrl与Shift组合键的⽅法与其类似,下⾯我们看看按下Ctrl + Alt + 数字0该怎样设置:
if((int)e.Modifiers == ((int)Keys.Control + (int)Keys.Alt) && e.KeyCode == Keys.D0)
{
htmlbutton属性MessageBox.Show("按下了Control + Alt + 0");
}
将Ctrl和Alt的枚举转换为int型相加后与Modifiers对⽐,这样即可判断是否按下了该组合键。
那么 怎么触发按钮事件呢?
如按F1触发confirm按钮事件
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.F1)
{
/ /如果还有keypress事件,不让此快捷键触发其事件可加⼀句代码
e.Handled = true; //将Handled设置为true,指⽰已经处理过KeyPress事件
confirm1.PerformClick();////执⾏单击confirm1的动作
}
}
另外的,与窗体的AcceptButton属性相关联的按钮,将与键盘上的Enter键对应;与窗体的CancelButton属性相关联的按钮,将与键盘上的Ecs键对应。
另外⼀种简单快捷键的⽅法
在设置Button的Text属性时,在⼀个英⽂字母的前⾯加上&(and符),例如将btnConfirm的Text属性设置为:&Confirm,当运⾏窗体,按下Alt + C时,就相当于按下该键。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论