做了一个小程序,用按钮来模拟数字的输入,如下图
将10个按钮放在一个panel1中,名称分别是button1,button2,后面依次类推
下面的文本框名称为textBox1
想要解决的问题:当点击一个按钮时,就如同用户输入了一个数字,并在其后打了一个空格,比如我点击一下8,相当于在textBox1中输入了8,然后再跟一个空格.
分析:为panel1中的每一个按钮增加一个点击事件,并将按钮自身的文本赋值给textBox1,然后使用SendKeys发送一个空格.
中文MSDN上查了一下,发现并没有SendKeys发送空格的办法,还好有前辈发现了其实发送空格的办法在英文的MSDN上面有:http://msdn.microsoft.com/en-us/library/8c6yea83
private void 给10个按钮添加打字事件() { //遍历在panel1中的每一个控件,设置其Click事件的实现 foreach (var item in panel1.Controls) { ((Button)item).Click += new EventHandler(测试_Click); } } void 测试_Click(object sender, EventArgs e) { textBox1.Text = ((Button)sender).Text; textBox1.Focus();//注意需要将焦点设置在文本框中,不然看不到效果 SendKeys.Send(" "); }
这种使用foreach的办法来给每一个按钮设置事件比单独一个个的设置要方便的多,如果以后要增加按钮的数量,也不用更改这儿的程序,只要这个按钮在panel1里面!
一般来说SendKeys.Send()方法需要在里面加上一个按键的描述,空格比较特殊,直接键入,这反倒把人给弄糊涂了,比如
SendKeys.Send("{ENTER}");==>键入回车
SendKeys.Send("{BACKSPACE}");==>键入删除前一字符
SendKeys.Send("{LEFT}");==>键入向左键
如果想看全部的按键,可以在MSDN上找到详细的说明:
http://msdn.microsoft.com/zh-cn/library/system.windows.forms.sendkeys.send.aspx