2011-12-14 16 views
2

私はプログラミングC#の世界に着手しています。私のコードでは小さなグリッジが発生し、デザインが台無しになります。メッセージボックスの表示が早すぎる - C#

何らかの理由で、テキストボックス内のテキストを変更しようとすると、メッセージボックスが表示されるまで視覚的に変更されません。 WP7用にプログラミングしています。これはボタンクリックで実行されます。ラッセルTroywestが指摘したように、あなたのコードは、UIスレッド、グラフィカルインターフェイスの更新を担当している非常に同じスレッドで実行されている

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

メッセージボックスをコメントアウトするとどうなりますか? – IAbstract

+0

メッセージボックスが表示されたとき、または終了後にテキストが更新されますか? –

+0

Draw()関数が終了した後でなければ、電話機がその画面を更新する機会を得ることができないためです。メッセージボックスを表示する前にRepaintなどを呼び出す必要があります。申し訳ありませんが、私は窓の電話のためにまだコード化していないものをあなたに正確に伝えることはできません。私は他の誰かがもっと多くの情報ですぐに一緒になると確信している;) –

答えて

6

以下は私のコードです。したがって、関数が終了するまで、テキストボックスの視覚的表現は更新されません。

簡単な解決策は、あなたのメッセージボックスの実行を遅らせることです。

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

この方法で、あなたのdraw方法は、UIスレッドは、すぐにそれがリフレッシュ完了だとして表示されます、メッセージボックスを表示せずに終了しますインタフェース。

+0

多くのおかげで、期待どおりに動作します! – Quazum

関連する問題