プログレスバーと動作を同期させるには?

解決


Y@初心者  2006-07-04 02:46:47  No: 95921

今、VB2006でプログラミング練習の為に簡単なコピーツールを作成しました。
==========================================コード==========================================
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Me.FolderBrowserDialog1.ShowDialog()
        Me.TextBox1.AppendText(FolderBrowserDialog1.SelectedPath)

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Me.FolderBrowserDialog2.ShowDialog()
        Me.TextBox2.AppendText(FolderBrowserDialog2.SelectedPath)
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        My.Computer.FileSystem.CopyDirectory(FolderBrowserDialog1.SelectedPath, FolderBrowserDialog2.SelectedPath, True)
        MsgBox("コピー完了")
    End Sub
============================================================================================

上のように簡単なディレクトリをコピーするだけのプログラムなのですが、プログレスバーを挿入し、進行状況を確認できるようにしたいのです。
そのような場合、どうやって、プログレスバーとコピーの進行状況を関連させれば良いのでしょうか?
何卒、超初心者なのでエキスパートの方々には簡単すぎる質問かも知れませんが、回答頂ければ幸いです。よろしくお願いします。


Hongliang  URL  2006-07-04 03:54:10  No: 95922

My を使うのなら、CopyDirectory の第三引数に Boolean ではなく UIOption.AllDialogs を使えばエクスプローラのと共通のプログレスダイアログも表示されます。ただしこの場合強制上書きはできません(ユーザに問い合わせます)。
それが気にくわないというのなら、ファイルを一つずつ手でコピーしていくしか無いでしょう。そうする場合ならプログレスバーはコピー対象のファイルの総数を取得してそれをプログレスバーの最大値とすれば良いですね。サブディレクトリがあった場合の処理が多少面倒ですが。


Y@初心者  2006-07-04 04:11:40  No: 95923

ありがとうございました。
BooleanではなくFileIO.UIOption.AllDialogsを使用したところ、
Hongliangさんの言うとおりエクスプローラのプログレスダイアログが表示され、視覚的に進行状況が分かりやすくなりました。

まだまだ超初心者ですけど、よろしくお願いします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加