首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TextBox英文限制为20个字符,简体中文为10个字符

问TextBox英文限制为20个字符,简体中文为10个字符
EN

Stack Overflow用户
提问于 2014-01-30 04:26:13
回答 1查看 1.4K关注 0票数 3

我有WPF c# TextBox,它必须限制在最多20个字符的英文,和10个字符的简体中文,或其他类似的字符集。我将MaxLength属性设置为20个字符,它在使用英文键盘时可以正常工作,但如果我选择中文键盘,它允许我输入20个简体字符。我们的数据库字段被限制为20个字节。谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2014-01-30 04:34:58

MaxLength计算的是字符数,而不是表示字符数所需的字节数。事实上,字符串的字节表示取决于所使用的字符编码。.NET原生使用UTF-16,所有字符(英文和中文)占用2个字节。我假设您的数据库使用UTF-8,其中英文字符占用1个字节,中文字符占用2个字节。

您将需要动态地强制执行您的限制。您可以通过实现ValidationRule来实现,如下图所示。有关如何在TextBox中使用它的说明,请阅读Data validation in WPF。

代码语言:javascript
复制
public class Byte20ValidationRule : ValidationRule
{
    public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
    {
        int byteCount = Encoding.UTF8.GetByteCount(value.ToString());
        if (byteCount <= 20)
            return new ValidationResult(true, null);

        return new ValidationResult(false, "Too many bytes.");
    }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21441889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档