テキストボックスにファイルのパスを手作業で入力する。不便だと思いませんか? ここではファイルをドラッグするとパスが入力されるテキストボックスを作成します。またファイルをコピーしている状態でペーストしてもファイルパスが入力されるテキストボックスを作成します。

簡単な説明

クラスの名前はFilePathTextBoxとします。

ドラッグされたファイルやコピーされているファイルが複数のときはなにもおきません。AllowOnlyFilePathプロパティで通常の文字列がドロップされたりペーストされた場合は対応するしないかを選択できるようにします。

DragOverイベントが発生したらドラッグされているものがファイルであるかどうか調べて、ドロップ可能かどうかが視覚的にわかるようにしています。そしてドロップされたらテキストボックス内にファイルパス(フォルダパスにも対応)を表示させます。

クリップボードからのペーストの場合、クリップボードのデータが何かをしらべてペースト可能なものであればペーストします。

AllowOnlyFilePath == falseのときにリッチテキストデータをドラッグ&ドロップするとテキストが表示されるようにゴニョゴニョしています。

ファイルパスを入力する前提のテキストボックスなのでドロップ、ペーストをするとテキストボックス内の文字列がすべて変更されます。

独自に作成したプロパティ

AllowOnlyFilePath
 trueにするとD&Dとペーストではファイルパス、フォルダパスしか自動入力されない

使い方

上段に貼り付けているのは先ほど作成したFilePathTextBoxです。下のチェックボックスは普通のチェックボックスです。

このサンプルではチェックボックスでファイルパスではない通常の文字列もドロップまたはペーストできるか設定できるようにしています。