zoukankan      html  css  js  c++  java
  • C#:实现快捷键自定义设置(转)

    项目开发过程中,需要实现类似有道词典的软件设置中的自定义快捷键功能,如下图所示:

    当我们相继按下Ctrl+Alt+M的时候,软件就会自动将快捷键显示在文本框中。

    最终的效果如下图所示:

    private void keyDown(object sender, KeyEventArgs e)
    {
        StringBuilder keyValue = new StringBuilder();
        keyValue.Length = 0;
        keyValue.Append("");
        if (e.Modifiers != 0)
        {
            if (e.Control)
                keyValue.Append("Ctrl + ");
            if (e.Alt)
                keyValue.Append("Alt + ");
            if (e.Shift)
                keyValue.Append("Shift + ");
        }
        if ((e.KeyValue >= 33 && e.KeyValue <= 40) ||
            (e.KeyValue >= 65 && e.KeyValue <= 90) ||   //a-z/A-Z
            (e.KeyValue >= 112 && e.KeyValue <= 123))   //F1-F12
        {
            keyValue.Append(e.KeyCode);
        }
        else if ((e.KeyValue >= 48 && e.KeyValue <= 57))    //0-9
        {
            keyValue.Append(e.KeyCode.ToString().Substring(1));
        }
        this.ActiveControl.Text = "";
        //设置当前活动控件的文本内容
        this.ActiveControl.Text = keyValue.ToString();
    }
    
    private void keyUp(object sender, KeyEventArgs e)
    {
        string str = this.ActiveControl.Text.TrimEnd();
        int len = str.Length;
        if (len >= 1 && str.Substring(str.Length - 1) == "+")
        {
            this.ActiveControl.Text = "";
        }
    }
    e.KeyValue和字符的对应关系
    字符 e.KeyValue
    a-z|A-Z 65-90
    F1-F12 112-123
    0-9 48-57
    PageUp 33
    PageDown 34
    End 35
    Home 36
    左(←) 37
    上( ↑ ) 38
    右(→) 39
    下( ↓ ) 40

    接着,为textbox控件分别设置_KeyDown和_KeyUp事件,并在其中调用以上2个核心函数。

    如下所示:

    private void textBox1_KeyDown(object sender, KeyEventArgs e)
    {
        keyDown(sender, e);
    }
    
    private void textBox1_KeyUp(object sender, KeyEventArgs e)
    {
        keyUp(sender, e);
    }

    转载出处:C#:实现快捷键自定义设置(http://www.cnblogs.com/hongfei/p/4148710.html)
  • 相关阅读:
    Mybatis的缓存
    Mybatis使用assocation和Collection实现延迟加载
    Mybatis:一对多的查询
    Mysql:事务
    Mysql:多表查询
    Mysql:数据库的设计
    Mysql:约束
    MYSQL:DQL-查询表中的记录
    panic: cannot create context from nil parent
    $request input 获取参数null
  • 原文地址:https://www.cnblogs.com/candyzhmm/p/5718604.html
Copyright © 2011-2022 走看看