この記事では、テキストファイル(拡張子.txt)をアプリケーションのフォームにドラッグ&ドロップして、ドロップされたファイルのパスを取得する簡単な例を紹介します。
サンプルコード
まずはフォームにファイルのドロップを許可します。プロパティでAllowDropをTrueに設定します。
フォームにDragEnterとDragDropのイベントハンドラを追加します。
その後、イベントハンドラの内容を以下のように書き換えてください。
※この例では、分かりやすさ重視のためドラッグアンドドロップの対象ファイル数を1個に固定しています。複数ファイルに対応したい場合は、filesの処理を適宜変更ください。
DragEnterのイベントハンドラ
private void Form1_DragEnter(object sender, DragEventArgs e)
{
// ドラッグされたデータはファイル形式か
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
// 拡張子が.txtの場合はマウスアイコンを変更
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
if (Path.GetExtension(files[0]).ToLower() == ".txt")
{
e.Effect = DragDropEffects.Copy;
}
else
{
e.Effect = DragDropEffects.None;
}
}
else
{
e.Effect = DragDropEffects.None;
}
}
DragDropのイベントハンドラ
private void Form1_DragDrop(object sender, DragEventArgs e)
{
// ドロップされたファイルを取得
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
if (files != null && files.Length > 0)
{
// 拡張子が.txtの場合は処理する
string filePath = files[0];
if (Path.GetExtension(files[0]).ToLower() == ".txt")
{
MessageBox.Show("ドロップされたファイルのパス:" + filePath);
}
}
}
まとめ
この記事では、フォームにファイルをドラッグ&ドロップして、ドロップされたファイルを処理する簡単な例を紹介しました。