【发布时间】:2010-11-27 13:24:27
【问题描述】:
我已将 Windows 窗体应用程序中文本框的 MaxLength 属性设置为 10
我通过读取文件来填充文本框。但是,如果读取的字符串超过 10 个字符,文本框仍会被填充。但是当我手动尝试输入一个字符串时,它工作正常(也就是说,它不允许输入超过 10 个字符)。
为什么这两种行为有区别?我怎样才能从文件中填充我的文本框并且仍然让 MaxLength 属性工作?
谢谢, 维伦
【问题讨论】:
我已将 Windows 窗体应用程序中文本框的 MaxLength 属性设置为 10
我通过读取文件来填充文本框。但是,如果读取的字符串超过 10 个字符,文本框仍会被填充。但是当我手动尝试输入一个字符串时,它工作正常(也就是说,它不允许输入超过 10 个字符)。
为什么这两种行为有区别?我怎样才能从文件中填充我的文本框并且仍然让 MaxLength 属性工作?
谢谢, 维伦
【问题讨论】:
完全依赖即时验证值是不明智的 - 您也应该始终验证最终值。例如,我看到人们经常使用 KeyUp/KeyDown/KeyPress 事件来禁止各种字符,然后忘记了人们经常使用复制和粘贴(这否定了预期的验证)。
【讨论】:
来自TextBoxBase.MaxLengthProperty 规范:
在代码中,您可以将 Text 属性的值设置为长度大于 MaxLength 属性指定的值的值。此属性仅影响在运行时输入到控件中的文本。
换句话说,从数据源中提取时,您必须限制代码中的文本数量。
例如:
string text = "The quick blue smurf jumped over the brown fox.";
textBox1.Text = text.Substring( 0, textBox1.MaxLength );
【讨论】:
在最糟糕的情况下,您可以尝试在绑定到文本框时将数据限制为 10 个字符:
txtMyTextbox.Text = Left(myData, 10)
【讨论】:
您必须以编程方式对其进行限制。这就是浏览器处理 HTML 的简单方式。对不起:(
不幸的是,HTML 规范没有提供关于这个问题的任何指导(我可以找到),所以浏览器制造商已经解决了这种行为。
【讨论】: