字符串一般不建议作为用户输入,主要原因是字符串输入过于灵活,很难判断用户输入的字符串是否合理,比如我们需要的是二进制数字字符串,这就要求只能输入0或1,其它字符都是不允许输入的。如果对输入字符不加限制,用户输入了非法的字符,会导致后续操作错误。
      下面采用两种常见的方式限制字符串的输入,以0、1组成的二进制字符串为例,相同的方法可以处理其它允许输入的字符。

一、利用字符串输入控件的过滤型KEYDOWN事件
      对于0、1组成的二进制字符串,除了允许0、1输入外(0、1对应的ASCII为48、49),还需要允许退格输入(ASCII为8)以及左右方向键。左右方向键需要使用虚拟V键来判断,V键使用枚举类型。

Picture
      退格允许取消输入,左右方向键允许定位光标,修改前面输入的特定字符。

二、利用字符串ValueChanged事件
      默认情况下,只有字符串输入完毕后,失去焦点或者回车后,才会产生值改变事件。这种情况下,值改变事件是不适用的。当我们输入很长一段字符串后,然后才通知用户,它的输入是错误的,这显然是不合理的。
      我们需要的是当每个字符发生改变是,都要判断输入字符是否合理,这就需要输入每个字符时都要产生值改变事件。
     
我们需要的是当每个字符发生改变是,都要判断输入字符是否合理,这就需要输入每个字符时都要产生值改变事件。
    
Picture
      启用键入时刷新时,每输入一个字符就产生一次值改变事件。这样就可以通过整个字符串判断是否是合理输入了。个人认为还是采用KEYDOWN过滤事件更为合适。

Picture



Leave a Reply.