2016-04-15 16 views
1

C#でWindowsフォームを実装していますが、ボタンのテキスト内容を変更しようとすると、この問題が見つかります。ボタンテキストの最後の有効化のみが表示されます。ボタンのテキスト内容を1秒後に変更します。

 button.Text ="Content" 
     System.Threading.Thread.Sleep(1000); 
     button.Text = ""; 

どうすればこの問題を解決できますか?あなたはこのような何かTimer使用して試すことができます

+1

を - あなたは待っている間、それは描画および更新できるようにする必要があります。タイマーを使用するなど.. – BugFinder

答えて

2

この試してみてください:あなたのUIは、あなたが睡眠を行いながら凍結し、それを更新しているので

button.Text ="Content"; 

Application.DoEvents(); // This will process all UI events currently in message queue 

System.Threading.Thread.Sleep(1000); 
button.Text = ""; 
+0

'Application.DoEvents()'はイベントを処理しますが、アプリケーションはフリーズします(秒間) –

+0

本当ですが、OPはATMを気にしていないようです。タイマーやタスクを使用する方が良い解決策になります。 –

1

:あなたは回避 lambasと明示的な処分にしたい場合は

button.Text = "Content"; 

    Timer timer = new Timer() { 
    Interval = 1000, 
    Enabled = true 
    }; 

    timer.Tick += (sender, e) => { 
    button.Text = ""; 

    timer.Dispose(); 
    }; 

は、フォームにタイマーを置きます。

関連する問題