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

时间:2014-01-29 20:26:13

标签: c# wpf validation textbox

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

1 个答案:

答案 0 :(得分:4)

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

您需要动态强制执行限制。您可以通过实施ValidationRule来实现此目的,例如下面的TextBox。请阅读Data validation in WPF,了解如何在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."); } }

中使用此功能
{{1}}