-
C#教程之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:
if (e.Modifiers == Keys.Alt && e.KeyCode == Keys.D0)
{
MessageBox.Show("按下了Alt + 0");
}
if ((int)e.Modifiers == ((int)Keys.Control + (int)Keys.Alt) && e.KeyCode == Keys.D0)
{
MessageBox.Show("按下了Control + Alt + 0");
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.F1)
{
另外的,与窗体的AcceptButton属性相关联的按钮,将与键盘上的Enter键对应;与窗体的CancelButton属性相关联的按钮,将与键盘上的Ecs键对应。
新建一个空白窗体
每个窗体都有这样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)
{
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时,就相当于按下该键。
最新更新
python爬虫及其可视化
使用python爬取豆瓣电影短评评论内容
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比