投稿者 るしぇ  () 投稿日時 2008/8/29 21:44:00
>>3 
というか、処理は全て正常に実行されてるんだけど、描画処理が実行されないから 
画面に反映されないだけね。 
 
ウィンドウは常に再描画されています。他のウィンドウと重なった後とか、 
最大化された時とか、ウィンドウをマウスで移動させた時とか。 
自分のプログラムだけの問題ではないので、OS(Windows)が制御しています。 
つまり、再描画処理は別のプログラムの仕事なんです。 
 
基本的に、プログラムの実行中は一連の処理をまとめて実行します。この間に別の 
プログラムの処理が命令された場合、待機状態となります。先に実行されている 
処理が終わってから待機状態の命令が実行されます。 
# このため、CPU使用率100%とかだとアプリケーションがなかなか起動しなかったり、 
# 表示が遅れたり、いわゆる『重い』状態になります。 
 
ボタンを押したイベントから、Button1_Click_1 の関数の処理は一括して 
実行されます。この間、OSの再描画処理は実行されません。待機状態です。 
Button1_Click_1 から End Sub までが実行されてから画面が再描画されます。 
 
結果、最後の状態しか反映されません。 
 
1つの解決方法として DoEvents で OS に制御を返す方法があります。ただし 
これを実行してしまうと、再描画処理だけでなく、OS が溜め込んでいた待機 
状態の命令が他にも実行されてしまうため、この場面では使用すべきでは 
ありません。 
 
プログラムから再描画処理を呼び出しましょう。 
[Control.Refresh メソッド] 
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.control.refresh.aspx 
ほとんどのコントロールで使用できますので、そのコントロールの設定を変更した 
直後に、必要な部分の再描画をしてみてください。 
  RichTextBox1.Refresh() 
  TextBox1.Refresh() 
  Me.Refresh() 
など。