文本在Winforms文本框中消失

时间:2015-05-08 19:10:09

标签: c# .net winforms textbox

我遇到了一个WinForms文本框的奇怪问题。当我将Text属性设置为长字符串时,文本似乎消失了。我的理解是Winforms中的文本框的默认MaxLength为32767,可以设置为小于或等于int.MaxValue的任何值。重现该问题的步骤如下:

  1. 启动Visual Studio 2013
  2. 创建一个新的Windows窗体应用程序。选择以.NET 3.5框架为目标。
  3. 将文本框控件拖到表单上。
  4. 在表单加载事件中,键入以下代码:

    private void Form1_Load(object sender, EventArgs e)
    {
        // Setting the MaxLength property should be unnecessary since the
        // default is 32767, but I'm implicitly setting it anyway.
        textBox1.MaxLength = int.MaxValue;
        string s = "";
    
        // Weird things happen when the value in the next line
        // is set to anything >= 4680
        for (int i = 0; i < 15000; i++)
        {
            s = s + "A";
        }
    
        textBox1.Text = s;
    }
    
  5. 运行此应用程序,您将发现文本框“显示”为空。我说“出现”是因为如果你将光标放在文本框中,你可以看到它的行为就好像文本框中有东西一样,但没有任何东西在视觉上。

    无论发生什么事,4680似乎都是“神奇数字”。如果您将for循环中的数字更改为4680,则文本框中仍然没有文本(尽管单击文本框会显示文本)。如果您将其更改为4679或更小,那么它可以正常工作。此外,将Multiline属性更改为true可使其正常工作。

    有没有人对这种奇怪的行为有任何想法或解决方法?我想我的解决方法可能是将Multiline属性设置为true,但我仍然对导致此行为的原因感到好奇。

0 个答案:

没有答案