今、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
============================================================================================
上のように簡単なディレクトリをコピーするだけのプログラムなのですが、プログレスバーを挿入し、進行状況を確認できるようにしたいのです。
そのような場合、どうやって、プログレスバーとコピーの進行状況を関連させれば良いのでしょうか?
何卒、超初心者なのでエキスパートの方々には簡単すぎる質問かも知れませんが、回答頂ければ幸いです。よろしくお願いします。
My を使うのなら、CopyDirectory の第三引数に Boolean ではなく UIOption.AllDialogs を使えばエクスプローラのと共通のプログレスダイアログも表示されます。ただしこの場合強制上書きはできません(ユーザに問い合わせます)。
それが気にくわないというのなら、ファイルを一つずつ手でコピーしていくしか無いでしょう。そうする場合ならプログレスバーはコピー対象のファイルの総数を取得してそれをプログレスバーの最大値とすれば良いですね。サブディレクトリがあった場合の処理が多少面倒ですが。
ありがとうございました。
BooleanではなくFileIO.UIOption.AllDialogsを使用したところ、
Hongliangさんの言うとおりエクスプローラのプログレスダイアログが表示され、視覚的に進行状況が分かりやすくなりました。
まだまだ超初心者ですけど、よろしくお願いします。
ツイート | ![]() |