加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 使用按键模拟短信风格输入

发布时间:2020-12-16 01:48:25 所属栏目:百科 来源:网络整理
导读:任何人都能指出我正确的方向,能够使用数字键盘上的按键模拟短信风格打字吗? 我可以让每个数字打印出一个字母,但我不确定如何让我的程序在相同的键上处理与同一’事件’相同的多个按键(即如果在一段时间内再次按下该键,则滚动几个字母) (例如)2秒). 我已经查
任何人都能指出我正确的方向,能够使用数字键盘上的按键模拟短信风格打字吗?

我可以让每个数字打印出一个字母,但我不确定如何让我的程序在相同的键上处理与同一’事件’相同的多个按键(即如果在一段时间内再次按下该键,则滚动几个字母) (例如)2秒).

我已经查找了多个按键,但总是想出键组合(ctrl,alt,delete等).

解决方法

首先,您需要存储可用的组合:

static char[] num1 = { 'A','B','C','1' };
    static char[] num2 = { 'D','E','F','2' };
    // etc...

然后我们创建一个组合字典,映射到生成它们的右键字符:

Dictionary<char,char[]> map = new Dictionary<char,char[]>()
    {
        {'1',num1},{'2',num2} 
    };

一些要跟踪的变量:

char[] curr = null;
    char currChar = '-';
    int index = 0;

打印功能:

void Print()
    {
        Console.WriteLine(curr[index]);
    }

逻辑:

private void Form1_KeyPress(object sender,KeyPressEventArgs e)
    {
        if (map.ContainsKey(e.KeyChar))
        {
            if (curr == null || e.KeyChar != currChar)
            {
                curr = map[e.KeyChar];
                index = 0;
                currChar = e.KeyChar;
                Print();
            }
            else
            {
                ++index;
                if (index == curr.Length)
                    index = 0;
                Print();
            }
        }
    }

逻辑基本上检查以确保我们的keymap包含有问题的keycode.如果我们没有跟踪任何内容,或者它与我们当前正在跟踪的内容不同,请使用该特定地图和第一个索引.

否则,如果是重复按键,则增加索引(如果我们通过结束则循环回到开头).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读