2016-06-09 4 views
2

Пример кода для иллюстрации:MessageBox.Show поведение с большим количеством строк

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, сообщение не отображается вообще, и вы должны убить программу из панели задач. Может кто-нибудь пролить некоторый свет на это ?

EDIT: благодаря всем ответам. Поведение кажется довольно случайным.

например. если numLines = 2175, окно сообщения отображается в порядке. , если numLines = 2176, окно сообщения не появляется, и программа перестает отвечать на запросы. Нажатие ALT-F4 снова заставляет программу реагировать (как будто вы только что закрыли модальное диалоговое окно, которое вы не могли видеть). если numLines = 4208, окно с только названием «Error» (и без тела) можно увидеть в нижней части экрана, как это:

enter image description here

+0

2175 - это самое большое количество линий, которые мои шахты будут делать независимо от входной строки. – Inisheer

+1

@ Inisheer - спасибо. Мой тоже. Если я использую 2176, окно не отображается, и приложение, похоже, ведет себя так, как будто на экране был невидимый модальный диалог (не отвечает). –

ответ

1

MessageBox использует в самом деле сумасшедшую систему, чтобы найти это лучший размер, чтобы вписаться в экран. Большое количество строк заставляет его зацикливаться и пытаться отобразить.

Смежные вопросы