タイトル : Re^3: Form_Loadイベント 投稿日 : 2007/12/14(Fri) 19:50 投稿者 : 魔界の仮面弁士
> > 表示後に処理したいなら、Load ではなく Shown に書くとか、 > Shownイベントを試しましたが、コントロールが真っ白になって > 直ったころには処理が終わっていました。 時間がかかる処理に対しては、BackgroundWorker を使ってみてください。 たとえば、 Private Sub Form1_Shown(…… '時間のかかる処理 System.Threading.Thread.Sleep(3000) '3秒待機 Me.Label1.Text = "終わり!" End Sub のようなコードだと、最初の 3 秒間、ラベルが 真っ白になってしまいますが、 下記のように、BackgroundWorker を併用すれば、それを回避できます。 Public Class Form1 Private Sub Form1_Shown(…… Me.BackgroundWorker1.RunWorkerAsync("任意の引数") End Sub Private Sub BackgroundWorker1_DoWork(…… '引数を受け取る Dim arg As Object = e.Argument 'ここに時間のかかる処理を記述 System.Threading.Thread.Sleep(3000) '3秒待機 '結果を返す e.Result = "終わり!" End Sub Private Sub BackgroundWorker1_RunWorkerCompleted(…… '結果を受け取る Dim ret As Object = e.Result Me.Label1.Text = CStr(ret) End Sub End Class |