【问题标题】:'Disabling' the MaxLength Property of a TextBox in C#在 C# 中“禁用”文本框的 MaxLength 属性
【发布时间】:2011-11-12 02:07:23
【问题描述】:

我目前正在开发一个 Windows 窗体应用程序,我需要一个不会将输入大小限制为 Int32.MaxValue 的文本框。

问题在于MaxLengthTextBox 上的Int32 属性,我当然不能设置大于该值的数字作为其值。

理想情况下,我根本不想设置任何数字并完全“禁用”此检查。

有什么方法可以让TextBox 不限制输入大小?

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

    设置为零

    Windows NT 4.0、Windows 2000、Windows 2000 专业版、Windows 2000 服务器,Windows 2000 高级服务器,Windows XP 家庭版,Windows XP Professional x64 Edition,Windows Server 2003 平台 注意:如果 MaxLength 属性设置为 0,最大字符数 用户可以输入 2147483646 或基于可用内存的数量, 以较小者为准。

    Windows Millennium Edition 平台注意:如果 MaxLength 属性为 设置为 0,用户可以输入的最大字符数是 32,766 或基于可用内存的数量,以较小者为准。

    发件人:http://msdn.microsoft.com/en-us/library/system.windows.forms.textboxbase.maxlength.aspx


    编辑窗口窗体

    【讨论】:

    • +1 这行得通......虽然,当我试图在TextBox 中粘贴一个巨大的字符串两次时,发生了一些奇怪的事情。出于某种原因,当我进行第二次粘贴时,TextBox 中显示的文本会消失,并且在您按 CTRL+A 并点击删除之前,它不会让您输入更多字符。但是TextBox 中的实际值仍然存在,只是不可见。有没有人遇到过这种情况?
    • @Andreas:这个字符串有多“巨大”?
    • @IAbstractDownvoteFactor:请注意,无论如何,2147483646 的限制比int.MaxValue 小一,所以这并不是真的给出更大的限制。
    • 例如,每个“粘贴”都包含一个长度为34464 个字符的字符串,我粘贴了两次。
    • @AndreasGrech:你知道 34464 比 int.MaxValue 少得多,对吧?
    【解决方案2】:

    int.MaxValue 的限制无论如何都是一个无法达到的限制。您将无法创建几乎那么长的字符串。换句话说,如果你真的需要超过 231 个字符,那么你遇到的问题比TextBox.MaxLength 更大。

    请问您何时认为在单个 GUI 控件中拥有超过 2GB 的 ASCII 文本文件实际上是一种有用的体验?如果您正在寻找一个可以处理大文件的全文编辑器,您可能不想使用TextBox 开头...

    编辑:我实际上认为您可能希望设置一个小于int.MaxValue 的限制更小,这是通过测试确定的 - 在您接近之前,您系统的其他部分可能会失败到那个限度。如果你愿意,算出真正的限制是多少,但我保证它会低于int.MaxValue...

    【讨论】:

    • 但是我目前正在编写这个应用程序来帮助进行测试,因此我需要能够输入跨越边界的字符串以查看会发生什么。
    • @AndreasGrech:跨越什么界限?理智?实际上,您认为(比如说)10 亿的限制对您来说是个问题吗?即便如此,对于 .NET string 来说,这也可能太过分了。
    • 但是如果这样一个“大”字符串可以让产品下架怎么办?
    • 这么大的字符串不能做任何事情,因为它一开始就不存在。
    • @AndreasGrech:它可以——但这会发生在你接近你担心的极限之前。
    猜你喜欢
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    • 2012-05-20
    • 1970-01-01
    • 2014-08-24
    • 2021-05-29
    相关资源
    最近更新 更多