ツールを作っていると、アプリ内でファイル名を入力する状況がよく発生します。
この際、現在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で決定しているため、複数のファイル名入力欄が有る場合でも、メソッドを複数用意することなく対応する事が可能です。
関連記事
コメントを残す