tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。