示例代码说明:
private void button2_Click(object sender, EventArgs e)
{
const int numLines = 3000;
StringBuilder sb = new StringBuilder();
for(int i=0; i < numLines; i++)
{
sb.AppendFormat("Hello world {0}\r\n", i);
}
MessageBox.Show(this, sb.ToString(), "Error");
}
现在,我意识到尝试在MessageBox中显示太多行可能不是一个好主意。但是,当numLines为“大”时,我很好奇它的预期行为。例如在我的Windows 10盒子上,如果numLines是3000,则消息框根本不显示,你必须从任务栏中删除该程序。任何人都可以对此有所了解吗?
编辑:感谢所有回复。这种行为似乎相当随意。e.g。如果numLines = 2175,则消息框显示ok。 如果numLines = 2176,则不会出现消息框,并且程序无响应。按ALT-F4会使程序再次响应(就好像您刚刚关闭了一个您看不到的模态对话框)。 如果numLines = 4208,屏幕底部可以看到一个只有标题为“Error”(并且没有正文)的消息框,如下所示:
答案 0 :(得分:1)
MessageBox使用一个非常疯狂的系统来找到适合屏幕的最佳尺寸。大量的线条导致它被卡住计算并试图渲染。