2

textbox当输入一个巨大的字符串时,我遇到了问题。

就我而言,文本框用于编写电子邮件地址,并且没有字符限制。所以,我做了这个测试:我在记事本中写了 200 个电子邮件地址,然后我将文本粘贴到上面textbox,文本消失了,但是如果我改变控件的焦点,文本又会显示出来。我已经看到了这个链接,但它对我没有帮助。我已经尝试将MaxLength属性更改为 0(微软怎么说),但它在这里也不起作用。

考虑一个包含 50 个字符的电子邮件地址,MaxLength 属性不会有问题,因为 200 个电子邮件地址乘以 50 个字符(每封电子邮件),我将有 10000 个字符,默认值为TextBox.MaxLength32767。

而且,在您询问代码之前,我只将文本设置为字符串。

myEmailObject.Address = txtEmail.Text;

我应该使用RichText,还是什么?

4

2 回答 2

8

这是 Windows EDIT 控件(由 TextBox 类包装的本机控件)中的一个已知限制。我知道 Windows 7 SP1 和 Windows 8 中存在限制,早期版本几乎肯定也有。

一旦在单行 TextBox 中显示超过 5000 个字符,您将使用此限制。给予或接受,它基于显示文本的总宽度(以像素为单位)。i因此,当您使用较小的字体或多于W字符时,您可以容纳更多。Afaik,当宽度超过 32767 像素时,您将超出限制,这个数字会在 USER32 api 的几个地方弹出,并且可以追溯到 Windows 版本 <= 3,即 16 位。保持 EDIT 在主要版本之间兼容 30 年是一项重大努力。

这个限制不会经常受到考验,在单行文本框中填充这么多字符是不切实际的。用户没有合理的方法可以在这么小的空间内用这么多的文本做任何有用的事情。不可能阅读它,可靠的编辑肯定是不可能的。

考虑一个更实用和用户友好的用户界面,限制不再是一个问题。使用 Multiline = true 或仅显示使用省略号的占位符字符串。

于 2012-05-30T18:00:45.617 回答
4

尝试将 Multiline 属性设置为 True 并增加文本框的高度

于 2012-05-30T17:49:23.177 回答