首页 新闻 搜索 专区 学院

获取键盘的键值 显示在textbox中

0
悬赏园豆:10 [已关闭问题]

最近写了一个小程序,用来显示键盘上的键值码。

比如,定位到一个textbox按下F1,就在textbox中显示F1.

问题是我按nump0ad时,则显示0numad0。

我重写了isinputkey,F1-F12等功能键可显示正常。

请问怎么样才能按下numpad0时只显示numpad0.

诸如此类,numpad9显示numpad9.

0显示D0,9显示D9.而不是显示0D0,9D9.

谢谢!谢谢!

 

Shannones的主页 Shannones | 初学一级 | 园豆:190
提问于:2009-05-26 22:46
< >
分享
其他回答(3)
0

你试试

Button btn;

btn=(Button)sender;

textBox1.Text=btn.Text;        

run777 | 园豆:195 (初学一级) | 2009-05-27 08:22
0

要先把你的代码拿出来看

风海迷沙 | 园豆:4453 (老鸟四级) | 2009-05-27 10:55
0

你可以尝试在KeyUp事件中获取并赋值。那样就没问题了。但是此时会有一个问题就是重复输入,比如你同时按住多个键。但是逐个松开这个时候就会有问题了。最终结果只显示最后一个松开的按键的值。

所以可以用一个按钮和开关变量来控制输入。代码如下,自己琢磨一下。呵呵

public partial class Form1 : Form
{
 public Form1()
 {
  InitializeComponent();

  textBox1.Enabled = false;
 }

 bool _isType = true;
 private void textBox1_KeyUp(object sender, KeyEventArgs e)
 {
  // 判断是否可以输入,可以输入的状态时则进行捕捉内容
  if (!_isType)
  {
   string keyname = Enum.GetName(typeof(Keys), e.KeyCode);

   if (e.Alt)
    keyname = "Alt + " + keyname;

   if (e.Control)
    keyname = "Ctrl + " + keyname;

   if (e.Shift)
    keyname = "Shift + " + keyname;

   textBox1.Text = keyname;

   _isType = true;
   textBox1.Enabled = false;
  }
 }

 private void button1_Click(object sender, EventArgs e)
 {
  _isType = false;
  textBox1.Enabled = true;
  textBox1.Focus();
 }
}

Tony Chi | 园豆:310 (菜鸟二级) | 2009-05-27 12:55
1

通过KeyCode可以获取到

惊悉是何年 | 园豆:205 (菜鸟二级) | 2009-06-07 19:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册