ファイルを削除する際にごみ箱に入れる [C#]

C#でファイルを削除する際にごみ箱に移す方法について紹介します。
C#にはファイルをごみ箱に移す操作を行うクラス、メソッドが用意されていません。
ですのでVisual Basicのアセンブリを使ってごみ箱に移す処理を行います。

Visual Basicのアセンブリを参照する

C#で全角と半角、ひらがなとカタカナの変換を行うために、Visual Basicのアセンブリを参照します。
ソリューション エクスプローラーでアセンブリを追加するプロジェクトのツリーノードを展開します。
展開すると表示されるツリーノードの「参照」を右クリックします。
コンテキストメニューが表示されるので「参照の追加」をクリックします。

プロジェクトの参照の追加をクリック

「参照マネージャー」ダイアログが表示されますので、左ペインの「アセンブリ」を選択(クリック)し、表示されるアセンブリの一覧から「Microsoft.VisualBasic」を選択(クリック)し「OK」ボタンをクリックします。

Microsoft.VisualBasicのアセンブリを選択して追加

アセンブリが参照されると「参照」ノード内に「Microsoft.VisualBasic」が追加されます。

追加されたMicrosoft.VisualBasicのアセンブリ

ファイルごみ箱に移す

ファイルをごみ箱に移すには、Visual BasicのMy.Computer.FileSystemオブジェクトのDeleteFileメソッドを使用します。

DeleteFileメソッドの構文

My.Computer.FileSystemオブジェクトのDeleteFileメソッドの構文は次のようになります。

DeleteFileメソッドの1つ目のパラメーター(file)には、削除するファイルのパスを指定します。
2つ目のパラメーター(showUI)には、ファイルを削除する際に表示するダイアログボックスの種類をUIOption列挙型で指定します。
UIOption列挙型には「AllDialogs」と「OnlyErrorDialogs」があります。
「AllDialogs」を指定するとプログレスダイアログボックス(進捗ダイアログボックス)およびすべてのエラーダイアログ ボックスを表示します。
「OnlyErrorDialogs」を指定するとエラーダイアログボックスだけを表示し、プログレスダイアログボックスは非表示にします。 既定値です。
3つ目のパラメーター(recycle)には、ファイルをごみ箱に送るために、RecycleOption列挙型の「SendToRecycleBin」を指定します。

DeleteFileメソッドの使用例

My.Computer.FileSystemオブジェクトのDeleteFileメソッドを使って、ファイルをごみ箱に入れるコードは次のようになります。

サンプルプログラム

サンプルとしてWindowsフォームアプリケーションを作成して、ファイルをごみ箱に移すプログラムを作成します。

ユーザーインターフェース

以下のようなフォームを作成します。

ファイルをごみ箱に入れるサンプルフォームデザイン

フォームには、削除するファイルのパスを指定する「ファイル」テキストボックス(textBox1)と、ファイルを参照する「…」ボタン(button1)と、ごみ箱に移す処理を実行する「button2」ボタンを配置します。

ソースコード

プロジェクトの実行

プロジェクトを実行します。

ファイルをごみ箱に入れるサンプルフォーム起動

「ファイル」テキストボックスに削除するファイルのパスを入力するか、「…」ボタンをクリックしてファイルを開くダイアログボックスから設定します。

ファイルをごみ箱に入れるサンプルフォームでファイルパスを設定
上記の例では「C:\Test\DeleteFile.txt」を指定しています。

「button2」をクリックします。

ファイルをごみ箱に入れるサンプルフォームでファイルを削除

ファイルがごみ箱に入り(削除され)メッセージが表示されます。