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.如果我们没有跟踪任何内容,或者它与我们当前正在跟踪的内容不同,请使用该特定地图和第一个索引. 否则,如果是重复按键,则增加索引(如果我们通过结束则循环回到开头). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |