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

    代码下载

    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# 中实现快捷键的3种不同的方式

    C#为应用程序注册快捷键

    版权

    原创文章,转载请著名出处:C#:实现快捷键自定义设置(http://www.cnblogs.com/hongfei/p/4148710.html)

  • 相关阅读:
    hdu 4115 石头剪子布(2-sat问题)
    AFNetWorking POST Multi-Part Request 上传图片
    左右c++与java中国的垃圾问题的分析与解决
    ACM核武器
    MAX2323E
    cocos2d-x 发动机分析:程序如何开始和结束?
    STL 源代码分析 算法 stl_heap.h
    Android 4.4(KitKat)表格管理子系统
    Swift
    Swift
  • 原文地址:https://www.cnblogs.com/hongfei/p/4148710.html
Copyright © 2011-2022 走看看