WinCE下数字键盘

        最近正在开发一个移动数据采集系统,其中涉及到了数据的录入功能,先开始直接调用的是系统自带的拼音键盘,如下图所示。

 

      

 

         在实际的试运行过程中,用户觉得单纯录入数字,用这个键盘太小,而且容易输错数据,于是本着客户就是上帝的精神,自己写了个数据键盘,效果图如下。

    

 

          这个键盘实现起来其实很简单,就是上学时很多人都做过的winform计算器的阉割版,现在为了写这篇博客,我也就羞射的把它拿出来了害羞

        这篇文章主要介绍的不是数字键盘怎么实现,而是在WinCE中如何调用此键盘,这就要用到委托和事件了。

        当textbox获得焦点,也就是触发GotFocus事件后。


private int keydownCount = 0;//记录获得焦点的次数

private void UCtxb_GotFocus(object sender, EventArgs e)
        {
            keydownCount++;
            if (keydownCount % 2 == 1)//当为第一次获取焦点时
            {
                Keybord kb = new Keybord(this.UClbl.Text);
                kb.changed += new Keybord.KeyboardHandle(kb_changed);
                kb.ShowDialog();
            }
            else
            {
                this.btnPic.Focus();//由于使用委托和事件,当从数字键盘赋值到textbox中时,textbox再次获得了焦点
                //会再一次触发GotFocus事件,所以赋值完成后需要将焦点转移
           } 
}


//在数字键盘中,定义委托事件。
 public delegate void KeyboardHandle(string s);
public event KeyboardHandle changed;

//实现数据的同步
private void txtNum_TextChanged(object sender, EventArgs e)
        {
            changed(txtNum.Text);
        }

private void btnEnter_Click(object sender, EventArgs e)
        {
            this.Close();
        }


          如果对委托和事件不太熟悉,可以看下此博文



posted @ 2013-01-11 09:11  风一样的大叔  阅读(318)  评论(0编辑  收藏  举报