none
C# TextBox 用字节长度控制输入的疑问 RRS feed

  • 问题

  • Textbox的MaxLength控制的是输入字符个数,能否以字节数来控制输入?

    我目前采用的方法是在keypress事件里面处理,不过在用五笔输入中文时,会有个问题,比如控制输入10个字节,当输入到第8字节时,若五笔中打出的是两个字以上的词组时,可以控制只有一个字输入,刚好只有10个字节,但如果我们这时继续按数字键还会输入。
    2009年12月25日 5:36

答案

  • 你好!

    可以控制,但你需要自己写代码。比如用正则判断字符中有几个汉字。汉字算2个长度。KeyPress, TextChanged 事件都可以处理。在事件中判断输入是否超过最大长度来确定是否要截取掉多余的部分。

    知识改变命运,奋斗成就人生!
    • 已标记为答案 YiChun Chen 2009年12月28日 9:41
    2009年12月25日 5:57
    版主
  • 你好!
         如果你在KeyPress中判断,的确有这个漏洞!你可以尝试在TextChanged事件中限制!
        
    周雪峰
    • 已标记为答案 YiChun Chen 2009年12月28日 9:41
    2009年12月25日 6:09
    版主

全部回复

  • 你好!

    可以控制,但你需要自己写代码。比如用正则判断字符中有几个汉字。汉字算2个长度。KeyPress, TextChanged 事件都可以处理。在事件中判断输入是否超过最大长度来确定是否要截取掉多余的部分。

    知识改变命运,奋斗成就人生!
    • 已标记为答案 YiChun Chen 2009年12月28日 9:41
    2009年12月25日 5:57
    版主
  • 你好!
         如果你在KeyPress中判断,的确有这个漏洞!你可以尝试在TextChanged事件中限制!
        
    周雪峰
    • 已标记为答案 YiChun Chen 2009年12月28日 9:41
    2009年12月25日 6:09
    版主

  • 版主好:
    TextChanged事件中限制有闪烁问题。
    在KeyPress事件处理,当一次五笔输入词组超过范围时控制不住。

    2009年12月28日 11:04
  • 尝试在窗体的构造函数中添加如下代码:
    this.SetStyle(ControlStyles.AllPaintingInWmPaint|ControlStyles.UserPaint|ControlStyles.OptimizedDoubleBuffer,true);
    周雪峰
    2009年12月28日 12:37
    版主