我遇到了一个WinForms文本框的奇怪问题。当我将Text
属性设置为长字符串时,文本似乎消失了。我的理解是Winforms中的文本框的默认MaxLength
为32767,可以设置为小于或等于int.MaxValue
的任何值。重现该问题的步骤如下:
在表单加载事件中,键入以下代码:
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;
}
运行此应用程序,您将发现文本框“显示”为空。我说“出现”是因为如果你将光标放在文本框中,你可以看到它的行为就好像文本框中有东西一样,但没有任何东西在视觉上。
无论发生什么事,4680似乎都是“神奇数字”。如果您将for
循环中的数字更改为4680
,则文本框中仍然没有文本(尽管单击文本框会显示文本)。如果您将其更改为4679
或更小,那么它可以正常工作。此外,将Multiline
属性更改为true
可使其正常工作。
有没有人对这种奇怪的行为有任何想法或解决方法?我想我的解决方法可能是将Multiline
属性设置为true
,但我仍然对导致此行为的原因感到好奇。