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