WinForm中快捷键与组合按键的设置方法

 更新时间:2013年02月28日 17:42:02   作者:  
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)
{
    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时,就相当于按下该键。

相关文章

  • C#实现页面GZip或Deflate压缩的方法

    C#实现页面GZip或Deflate压缩的方法

    这篇文章主要介绍了C#实现页面GZip或Deflate压缩的方法,涉及C#通过GZipStream与DeflateStream实现页面压缩的相关技巧,需要的朋友可以参考下
    2015-06-06
  • C#实现图形界面的时钟

    C#实现图形界面的时钟

    这篇文章主要为大家详细介绍了C#实现图形界面的时钟,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • C#学习笔记——基本语法

    C#学习笔记——基本语法

    本文给大家详细介绍了C#的基本语法知识以及一些基础知识的汇总,非常的简单基础,有需要的小伙伴可以参考下
    2017-02-02
  • WindowsForm实现警告消息框的实例代码

    WindowsForm实现警告消息框的实例代码

    这篇文章主要介绍了WindowsForm如何实现警告消息框,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • 简单了解C#设计模式编程中的桥接模式

    简单了解C#设计模式编程中的桥接模式

    这篇文章主要介绍了C#设计模式编程中的桥接模式,桥接模式经常应用于解耦逻辑层与数据操作层,需要的朋友可以参考下
    2016-02-02
  • C#获取程序文件相关信息的方法

    C#获取程序文件相关信息的方法

    这篇文章主要介绍了C#获取程序文件相关信息的方法,可实现获取程序版本号、版权声明、程序文本信息等,需要的朋友可以参考下
    2014-09-09
  • C#操作Access通用类实例

    C#操作Access通用类实例

    这篇文章主要介绍了C#操作Access通用类,实例分析了C#操作access的各种常见技巧,非常具有实用价值,需要的朋友可以参考下
    2015-06-06
  • 详解C#切换窗口

    详解C#切换窗口

    最近项目不多忙,于是抽点时间巩固下切换窗口问题,感兴趣的朋友跟着小编一起学习吧
    2016-04-04
  • C# using语法糖图文详解

    C# using语法糖图文详解

    这篇文章主要给大家介绍了关于C# using语法糖的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • 终于了解了下.net 和 j2ee的区别

    终于了解了下.net 和 j2ee的区别

    终于了解了下.net 和 j2ee的区别...
    2007-04-04

最新评论