25

winforms アプリを使用してネットワーク経由で大きなファイルをコピーする予定で、ある種の進行状況バーを表示する必要があります。独自のコピー ルーチンを作成するよりも、組み込みのファイル コピー ダイアログを表示する方がよいのではないかと考えていました。

「コピー完了」と「コピー失敗」の通知も必要です。

Windows XP、Vista、および 7 で動作させるにはこれが必要です。C# コードからこの機能を呼び出す方法はありますか?

4

2 に答える 2

26

回答元:こちら

実際、Windows Vista には、ユーザーが求めていることを正確にサポートする新しいコピー エンジンが含まれています。ただし、以前の既存の機能がニーズを満たす可能性があります。たとえば、個々のファイルまたはディレクトリをコピー、移動、名前変更、または削除する場合、Visual Basic® ランタイムによって既にラップされている SHFileOperation (shell32.dll から公開) を利用できます。Visual Basic 2005 を使用している場合は、My 名前空間の機能を簡単に使用できます。次に例を示します。

 My.Computer.FileSystem.CopyDirectory(
   sourcePath, destinationPath, UIOption.AllDialogs)

C# で同じことを行うには、(Microsoft® .NE​​T Framework インストール ディレクトリから) Microsoft.VisualBasic.dll への参照を追加し、次のようなコードを使用するという、もう少し作業が必要です。

using Microsoft.VisualBasic.FileIO;
...
FileSystem.CopyDirectory(
    sourcePath, destinationPath, UIOption.AllDialogs);

これを実行すると、Windows エクスプローラーから同じファイル操作を行った場合と同じ進捗 UI が表示されます。実際、Windows Vista で実行すると、新しい Window Vista 進行状況 UI が自動的に表示されます (図 1 参照)。ダイアログ

于 2011-07-14T01:24:14.840 に答える