zoukankan      html  css  js  c++  java
  • WinForm中快捷键与组合按键的设置

    快捷键在WinForm软件中必不可少,可以提高使用者的效率,下面就来看看怎样在我们的窗体中加上快捷键,新建一个Windows应用程序(我将解决方案命名为Keybd_Test,项目名为UI)。删掉自动生成的Form1.cs窗体,新建MainForm.cs窗体。调整大小,将StartPosition设置为CenterScreen,让窗体一运行就可以居中;将ShowIcon设置为false,去掉窗体标题栏的图标,现在什么控件也不加:

    每个窗体都有这样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对比,这样即可判断是否按下了该组合键。

    另外的,与窗体的AcceptButton属性相关联的按钮,将与键盘上的Enter键对应;与窗体的CancelButton属性相关联的按钮,将与键盘上的Ecs键对应。

    在设置Button的Text属性时,在一个英文字母的前面加上&(and符),例如将btnConfirm的Text属性设置为:&Confirm,当运行窗体,按下Alt + C时,就相当于按下该键。

    上面的示例名为Keybd_Test,点击这里下载(用VS 2005创建,.NET版本2.0)。

  • 相关阅读:
    在sql server中怎样获得正在执行的Sql查询
    在windows中使用VMWare安装Mac OS 10.7
    Scrspy 命令
    Windows Service 小品
    线程同步(一)
    线程基础必知必会(二)
    线程基础必知必会(一)
    准备工作与简介
    Python 正则表达式急速入门
    SQL Server 每日一题--每月销售额
  • 原文地址:https://www.cnblogs.com/bingyun84/p/1931304.html
Copyright © 2011-2022 走看看