2016-06-09 67 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,則根本不顯示消息框,並且必須從任務欄中刪除該程序。任何人都可以對此有所瞭解嗎?

編輯:感謝所有的答覆。行爲看起來相當隨機。

例如如果numLines = 2175,消息框顯示ok。 如果numLines = 2176,消息框不會出現,並且程序變得沒有響應。按下ALT-F4會使程序再次響應(就好像您剛剛關閉了一個您無法看到的模式對話框)。 如果numLines = 4208,只有標題爲「錯誤」(無正文)一個消息框,可以在屏幕這樣的底部可以看出:

enter image description here

+0

2175是我所要做的最多行數,不管輸入字符串。 – Inisheer

+1

@Inisheer - 謝謝。我也是。如果我使用2176,則沒有窗口顯示,並且該應用程序似乎表現得好像屏幕上有一個不可見的模式對話框(無響應)。 –

回答

1

MessageBox中使用了真的瘋了系統查找這是適合屏幕的最佳尺寸。大量的線條導致它卡住計算和嘗試渲染。