5

我有一个重写的(WinForms)MemoEdit 控件(不幸的是我不能给你代码)。如果我输入超过 32000 个字符,则会引发错误“GDI+ 中发生一般错误”我认为我的控件中存在错误(异常),但后来我在一个简单的 WinForm 应用程序上测试了这段代码:

var myString = new string('G', 32001);
var g = this.CreateGraphics();
g.MeasureString(myString, Font, 1000);

并且它以完全相同的错误崩溃有谁知道为什么会发生这种情况或在哪里指定了这个常数 32000 ?我在谷歌上找不到任何有用的东西。

4

2 回答 2

2

这似乎是 Windows 8 中引入的一个新错误。我很好奇旧版本 Windows 中的行为:

https://connect.microsoft.com/VisualStudio/feedback/details/776722/label-control-throws-an-exception-if-its-text-is-set-to-a-very-long-string

于 2015-06-03T22:20:02.167 回答
0

字符串宽度可能超过 Int32.Max (您可以参考此线程)。

我知道如果您使用涉及特殊字符的阿拉伯语语言(请参阅MSDN-Link : For bidirectional languages, such as Arabic, the string length must not exceed 2046 characters),则会发生您的错误。

为了解决您的问题,我建议每隔 31999 个字符拆分一次字符串并添加不同的大小/长度。

于 2015-05-31T10:33:21.560 回答