ディレクトリを移動する際に使用できるメソッドとして、
System.IO.Directory.Move(formDir,toDir)
がありますが、これは同一ドライブでの移動のみに対応していて、ディレクトリのコピーや他のドライブへの移動はできません。
ところが、ディレクトリのコピーを行う
System.IO.Directory.Copy(formDir,toDir)
のようなメソッドは用意されていません。なんでやねん…_| ̄|○
なので web ページを探ると、「Copyメソッドはありません」「ないので諦めて作りましょう(ファイルを一つ一つ再帰的にコピー)」って書かれているところも多いですが、VB2005以降だと、
My.Computer.FileSystem.CopyDirectory(formDir,toDir)
が用意されていてディレクトリのコピーが可能です。
でも my は VB2005 以降でしか使えません。しかし my はショートカットのはずなので、元のクラスがあるはずです。とおもって探したら、以下にありました。
Microsoft.VisualBasic.FileIO.FileSystem.CopyDirectory(formDir,toDir)
たぶんこれで、VB2003以前でも使用できると思います。
(試していません。 私はもう .net 1.1は使うことはない予定…)
しかし、my でなくても使用できるということは、VBでなくても、C#でも使用できるのでは?
参照設定で、「Microsoft.VisualBasic」を追加する必要がありますが、以下の記述で使用できました。
Microsoft.VisualBasic.FileIO.FileSystem.CopyDirectory(formDir,toDir);
C#でVBのライブラリなんて…という抵抗感もありますが、属性もコピーしてくれるので楽ですよ。