文本框禁用,字符串很大

本文关键字:字符串 文本 | 更新日期: 2023-09-27 18:35:52

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

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

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

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

myEmailObject.Address = txtEmail.Text;

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

文本框禁用,字符串很大

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

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

此限制不会经常进行测试,在单行文本框中填充这么多字符是不切实际的。 用户无法在如此小的空间内对如此多的文本做任何有用的事情。 不可能阅读它,可靠的编辑当然是不可能的。

请考虑使用更实用和用户友好的 UI,限制不再是问题。 使用多行 = true 或仅显示使用省略号的占位符字符串。

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