C#でドロップされたファイルの名前を得る(Windowフォーム編)
ツールを作っていると操作するファイルを指定してもらう場面が出てきませんか。そういう場合、エクスプローラーからファイルをドロップ出来るようにすると、使い勝手が良いですよね。 ググってみたら、そのものずばりなページがありました。誰でもやりたいことは同じなんですね。ちょっとアレンジして、テキストボックスにドロップするようにしてみました。
テキストボックスにドロップしたファイルのファイル名を表示する
上記サイトの例ではリストボックスにファイルを表示させてましたが、テキストボックスに表示するようにしてみます。 まず、FormにTextBoxを貼り付けて、TextBoxのAllowDropプロパティをTrueに変更します。 次に、ドラッグしたポインタがTextBoxの上に来たときにポインタアイコンを変更するために、TextBoxのDragEnterイベントにコードを追加します。「デザイン」ウィンドウのTextBoxを選択した状態で「プロパティ」ウィンドウのイベントアイコン(雷マークのアイコン)を押すと、プロパティウィンドウにTextBoxのイベントが表示されます。 ここで「DragEnter」をダブルクリックすると、コードウインドウに下記が追加されますので、ここにコードを書いていきます。 DragEventArgs.EffecプロパティにDragDropEffects列挙体のCopyを設定します。
private void textBox1_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Copy; // マウスポインタのアイコンを変更する
}
同様に、ファイル名を取得してTextBoxに表示するコードをTextBoxのDragDropイベントに記述します。
private void textBox1_DragDrop(object sender, DragEventArgs e)
{
textBox1.Text = string.Empty; // TextBoxの中身をクリア
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
foreach (string filename in (string[])e.Data.GetData(DataFormats.FileDrop))
{
textBox1.Text = textBox1.Text + filename + "; ";
}
}
}
if (DragEventArgs.Data.GetDataPresent(DataFormats.FileDrop)) { };
で、ドロップしたデータがファイルかどうかを判断します。その後、foreach
でファイル名を取り出してTextBoxに追記していきます。
実行してみると、下図の様になります。3つのファイルをドロップした例です。
これで、ファイルの選択を簡単にできるようになりました。
公開日
広告
C#の入出力カテゴリの投稿
- C#でCSVファイルを読み込んでコレクションに入れてみた
- C#でInputBoxを使ってみた
- C#で「名前を付けて保存」ダイアログを使ってみた
- C#でクリップボードから文字列を取得する
- C#でクリップボードにデータを入れる
- C#でコマンドライン引数を取得する
- C#でテキストファイルを読んでみた (File.ReadAllText編)
- C#でドロップされたファイルの名前を得る(WPF編 DragOver版)
- C#でドロップされたファイルの名前を得る(WPF編 PreviewDragOver版)
- C#でドロップされたファイルの名前を得る(Windowフォーム編)
- C#でパイプを使ってデータを入力してみる
- C#でメッセージボックスを使う