[C#]TextBoxにファイルをドラッグ&ドロップして、ファイル名入力させる

ツールを作っていると、アプリ内でファイル名を入力する状況がよく発生します。
この際、現在Explorer等で表示しているファイルをドロップすることで、ファイル名を指定できると、操作性が格段にアップします。

今回は、ドラッグ&ドロップでファイル名を指定できるようにします。


まずFormにTextBoxを貼り付け、ArrowDropプロパティをtrueにします。



次に、下記のコードを追加します。

private void TextBox_DragEnter( object sender, DragEventArgs e ) {
	//ファイルがドラッグされている場合、カーソルを変更する
	if (e.Data.GetDataPresent(DataFormats.FileDrop)) {
		e.Effect = DragDropEffects.Copy;
	}
}
 
private void TextBox_DragDrop( object sender, DragEventArgs e ) {
	//ドロップされたファイルの一覧を取得
	string[] fileName = (string[]) e.Data.GetData(DataFormats.FileDrop, false);
	if ( fileName.Length <= 0 ) {
		return;
	}
 
	// ドロップ先がTextBoxであるかチェック
	TextBox txtTarget = sender as TextBox;
	if ( txtTarget == null ) {
		return;
	}
 
	//TextBoxの内容をファイル名に変更
	txtTarget.Text = fileName[0];
}




TextBoxのDragEnterとDragDropのハンドラを、先ほど追加したメソッドに割り当てます。



これで、ファイルをドラッグすると、下記のようにカーソルが”+”付きに変わり…


ドロップするとファイル名が表示されます。



先ほど用意したTextBox_DragDropメソッドはファイル名の出力先をsenderで決定しているため、複数のファイル名入力欄が有る場合でも、メソッドを複数用意することなく対応する事が可能です。

関連記事

コメントを残す

メールアドレスが公開されることはありません。