gpt4 book ai didi

c# - TextBox 限制为英文 20 个字符,简体中文 10 个字符

转载 作者:行者123 更新时间:2023-11-30 15:30:55 32 4
gpt4 key购买 nike

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

最佳答案

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

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

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.");
}
}

关于c# - TextBox 限制为英文 20 个字符,简体中文 10 个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21441889/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com