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)
  • 相关阅读:
    我们需要测试!
    BlueStacks安装教程
    性能测试知多少系统架构分析
    免费去纽约 赢取总额20万美金 立即报名参加微软创新杯全球大学生大赛
    羡慕嫉妒别人只能说明自己不行
    算法和工程?那个重要......
    学习c++的优秀博客(更新ing)
    《启程》
    一点点反思
    提问的技巧
  • 原文地址:https://www.cnblogs.com/candyzhmm/p/5718604.html
Copyright © 2011-2022 走看看