过滤特定字符的文本框控件开发(具有特定数据类型的TextBox控件开发)

       继承微软的现有控件编写满足自己特定需求的控件是一件非常有趣的事情,在进行项目开发的时候,常常需要编写具有特定功能的文本框,有的只能输入数字,有的只能输入时间,还有的只能输入百分比等等,该怎样编写这样的控件呢?下面就以开发只能输入正整数值的文本框为例进行讲解。

       首先,定义一个名为CoreTextBox的组件类,该类继承自TextBox

       其次,定义类的属性和方法。要实现上面提出的功能需要从两方面来考虑,一方面是:在进行键盘敲击的时候,过滤掉非数字键,使其不能显示在文本框上;另一方面是:在文本框中进行粘贴操作的时候,对粘贴的内容进行验证。下面是设计出的方法(包括重写的方法)

       控制键盘敲击:

       1)  protected virtual bool IsValidateNumberKey(Keys key)

        --验证是否为数字键或允许的功能键

       2)  protected virtual void NumberKeyHandler(object sender,KeyEventArgs e)

        --对按下的键盘按键进行验证,设置e.Handled的值

    3)  private void BindHandlers
        --
KeyDown事件与NumberKeyHandler进行关联

    4protected override void OnCreateControl()

        --调用BindHandlers方法

    5 protected override void OnKeyPress(KeyPressEventArgs e)

        --设置e.Handled的值,控制是否将敲下的键盘字符显示在文本框中

     验证在文本框中粘贴的内容:

    1protected virtual void SetTextAsNumber()

        --将文本内容转化为数字,如果转化失败,则将文本框内容置空

    2protected override void OnTextChanged(EventArgs e)

        --调用SetTextAsNumber方法,保证文本框内容为数字

    最后,实现这些方法:

    代码如下:

总结

1)上面的控件从两方面对输入的内容进行控制,一种是使非数字键失效,一种是对粘贴内容进行验证,开发其他类似功能的文本框思路也是如此(如过滤敏感字符),读者可根据实际情况进行开发。

2)上面只是一个简单实现,目的是让读者了解实现此类功能的思路和原理,其实在真正进行开发的时候验证工作还需更加详细和周密。

3) 我们可以在文本框中添加一个DataType属性,使一个文本框实现n中特定文本框的功能,只需要在本例基础上,增添方法和某些必要内容即可,原理都一样。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值