掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Formが表示されるまでプログレスを表示するには? (ID:148206)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
しばらく開発から遠ざかっていたのでほぼ初心者です。 Form1のステータスバー内にプログレスバーを配置してあります。 このFormからForm2をモーダルで表示させるのですが、Form2内の各コントロールの設定に時間がかかるため、その間プログレスバーを表示させようと考えました。 ちょうどIEがページを表示する間プログレスが表示される様な感じを狙っています。 あちこちの掲示板(スレッドからフォームのコントロールを扱うなど)を参考に、スレッドなるものを使ってみましたが、Form2が表示された後にプログレスが動きます。 いろいろ試してみたのですが、どなたか良い方法をご指導ください。 以下、試してみたコードです。 (VB2008/WindowsXPを使用しています) Private Delegate Sub ValDelegate(ByVal Value As Integer) ' コントロールを扱うためのデリゲート宣言 Private ProgresUp As New ValDelegate(AddressOf SetValue) ' デリゲート宣言をデータ型とした変数を作成 Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click ' プログレスバー(ステータスバー内) With Me.ToolStripProgressBar1 '.Style = ProgressBarStyle.Marquee '.MarqueeAnimationSpeed = 100 '.Visible = True '--- .Style = ProgressBarStyle.Blocks .Minimum = 0 .Maximum = 12 .Step = 1 .Value = 0 .Visible = True End With Application.DoEvents() Cursor.Current = Cursors.WaitCursor Dim Thread1 As New System.Threading.Thread(New System.Threading.ThreadStart(AddressOf ThreadA)) Thread1.IsBackground = True Thread1.Start() Me.Button6.Enabled = False '------------------------------- Using frm As New Test2 '※ Form2が表示されたらプログレスを非表示にするため、[Shown]イベントを受け取る処理を追加知る予定です。 frm.ShowDialog(Me) ' Load時に、構築に時間がかかる End Using End Sub '// スレッドの本体 Private Sub ThreadA() For idx As Integer = 0 To 100 Me.Invoke(ProgresUp, New Object() {idx}) System.Threading.Thread.Sleep(10) Next idx End Sub '// (Delegateするメソッド) Private Sub SetValue(ByVal val As Integer) If val <= Me.ToolStripProgressBar1.Maximum Then Me.ToolStripProgressBar1.Value = val End If End Sub 以上、よろしくお願い致します。 尚、質問をしておきながら誠に勝手ですみませんが、「できるだけ頻繁に確認するつもりですが、少し間が空く時もございます。」大変失礼だと思いますがご容赦ください。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.