自定义控件,数字小键盘
在做项目中用到了自定义控件,它的要求就是可以向光标所在的活动控件输入数字,像TextBox控件等,
在这里我用到了一个类,是SendKeys类,该类在MSDN中是这样描叙的“提供将键击发送到应用程序的方法。”并且还需要用到该类里面的Send(string)方法,string是参数,表示要发送的击键字符串。同是我还用到了对象的AccessibleDescription属性,MSDN中解释说“获取或设置辅助功能客户端应用程序使用的控件说明”我在这里用到的对象是Lable lable=sender as Lable,Sender为Click事件的对象,例如要发送Delete键,我就要把Lable 的AccessibleDescription属性设置成”{Delete}”则可以SendKeys.Send(lable.AccessibleDescription)即可:
下边的图为我自定义控件,外观是难看了点,只是做一个小练习,我显示的数字都是Lable控件,这样可以不使当前的输入控件失去焦点。
现在就可以引用该控件,并且为当前的文本框输入数字,可以删除等。整个用法如:
下面是自定义控件的代码,很简单的,但是一定不要忘记,把AccessibleDescription属性设置成相应的键:
public partial class InputNumber : Control
{
public InputNumber()
{
InitializeComponent();
}
Color backColor1;//这颜色是时鼠标经过变色的,对功能没有作用
Color backColor2 = Color.FromArgb(50, 100, 200);
private void labSend_Click(object sender, EventArgs e)
{
Label lab = Sender as Label
SendKeys.Send(lab.AccessibleDescription);
}
private void labSend_MouseEnter(object sender, EventArgs e)
{
backColor1 = ((Label)(sender)).BackColor;
((Label)(sender)).BackColor = backColor2;
}
private void labSend_MouseLeave(object sender, EventArgs e)
{
((Label)(sender)).BackColor = backColor1;
}
}