自定义控件,数字小键盘

在做项目中用到了自定义控件,它的要求就是可以向光标所在的活动控件输入数字,像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;
        }
    }

posted @ 2011-10-25 23:23  SunRain117  阅读(3063)  评论(0编辑  收藏  举报