2011-12-14 100 views
2

我剛剛開始使用C#編程的世界,並且遇到了導致設計被破壞的小錯誤。消息框顯示得太早 - C#

由於某些原因,當我嘗試更改文本框中的文本時,它不會在視覺上更改,直到顯示一個消息框,該消息框位於代碼下方以更改文本。我爲WP7編程,如果這改變了任何東西。它運行在一個按鈕上。

下面是我的代碼:

private void Draw() 
    { 
     Random random = new Random((int)DateTime.Now.Ticks); 

     number[0] = random.Next(0, 9); 
     number[1] = random.Next(0, 9); 
     number[2] = random.Next(0, 9); 

      no1.Text = number[0].ToString(); 
      no2.Text = number[1].ToString(); 
      no3.Text = number[2].ToString(); 

     MessageBox.show("Example message"); 

    } 
+0

那麼,如果你註釋掉MessageBox會發生什麼? – IAbstract 2011-12-14 13:31:29

+0

當消息框顯示或關閉後,文本會更新? – 2011-12-14 13:33:08

回答

6

正如羅素Troywest指出的那樣,你的代碼是UI線程,也就是在負責更新圖形界面的非常相同的線程上執行。因此,在您的函數退出之前,文本框的可視化表示將不會更新。

一個簡單的解決方案是耽誤您的信息框的執行:

this.Dispatcher.BeginInvoke(() => MessageBox.show("Example message")); 

這樣,你的draw方法將退出而不顯示消息框,那麼UI線程就會立即顯示出來,因爲它是做清爽界面。