【问题标题】:textbox properties文本框属性
【发布时间】:2010-11-27 13:24:27
【问题描述】:

我已将 Windows 窗体应用程序中文本框的 MaxLength 属性设置为 10

我通过读取文件来填充文本框。但是,如果读取的字符串超过 10 个字符,文本框仍会被填充。但是当我手动尝试输入一个字符串时,它工作正常(也就是说,它不允许输入超过 10 个字符)。

为什么这两种行为有区别?我怎样才能从文件中填充我的文本框并且仍然让 MaxLength 属性工作?

谢谢, 维伦

【问题讨论】:

    标签: c# .net winforms textbox


    【解决方案1】:

    完全依赖即时验证值是不明智的 - 您也应该始终验证最终值。例如,我看到人们经常使用 KeyUp/KeyDown/KeyPress 事件来禁止各种字符,然后忘记了人们经常使用复制和粘贴(这否定了预期的验证)。

    【讨论】:

      【解决方案2】:

      来自TextBoxBase.MaxLengthProperty 规范:

      在代码中,您可以将 Text 属性的值设置为长度大于 MaxLength 属性指定的值的值。此属性仅影响在运行时输入到控件中的文本。

      换句话说,从数据源中提取时,您必须限制代码中的文本数量。

      例如:

      string text = "The quick blue smurf jumped over the brown fox.";
      textBox1.Text = text.Substring( 0, textBox1.MaxLength );
      

      【讨论】:

        【解决方案3】:

        在最糟糕的情况下,您可以尝试在绑定到文本框时将数据限制为 10 个字符:

        txtMyTextbox.Text = Left(myData, 10)
        

        【讨论】:

          【解决方案4】:

          您必须以编程方式对其进行限制。这就是浏览器处理 HTML 的简单方式。对不起:(

          不幸的是,HTML 规范没有提供关于这个问题的任何指导(我可以找到),所以浏览器制造商已经解决了这种行为。

          http://www.w3.org/TR/html401/interact/forms.html#h-17.4

          【讨论】:

          • 问题是关于 Windows 窗体应用程序,而不是 html。虽然,分辨率相似(几乎相同:)
          • 是的阿萨夫。很抱歉我忘了提及 C# Windows 窗体 GUI 应用程序。我的错。无论如何,它与 Metro Smurf 指出的相似
          猜你喜欢
          • 2013-08-31
          • 2011-01-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-02-07
          • 1970-01-01
          • 2010-10-28
          相关资源
          最近更新 更多