single.php

C#のコントロールにエクスプローラーからファイルをドラッグアンドドロップさせる場合の対処法

久しぶりに、Windowsフォームアプリのコントロールにエクスプローラーからファイルをドロップしてファイル名などを表示する操作を組もうとして、かなり手順を忘れていたので備忘録的に投稿しておきます。

ドロップ許可とイベント追加

コントロールにドロップさせるためには[AllowDrop]プロパティを “True” に変更します。

続けて、コントロールの[DragDrop]と[DragEnter]の2つのイベントを追加します。

ここまでで、ファイルをドロップするための下準備が完了します。

イベントにコードを追加

追加した2つのイベントに、ファイルをドラッグした時にマウスポインターを変更して、ドロップした際にファイルの内容を取得するコードを追加します。

具体的には次の手順で行います。

1.[DragEnter]イベントにコードを追加します。

private void listFile_DragEnter(object sender, DragEventArgs e)
{
  e.Effect = DragDropEffects.All;
}

イベントを追加したコントロールにマウスカーソルをドラッグすると、ポインターがドラッグ許可に変更されます。

2.[DragDrop]イベントにコードを追加します。

private void listFile_DragDrop(object sender, DragEventArgs e)
{
  if (e.Data.GetDataPresent(DataFormats.FileDrop))
  {
    foreach (string fileName in (string[])e.Data.GetData(DataFormats.FileDrop)) {
      if (Path.GetExtension(fileName).ToUpper() == ".PDF")
      {
        listFile.Items.Add(fileName);
      }
    }
  }
}

引数で受け渡された内容を取得して、ファイルの場合はコントロールにファイル名を追加しています。

また、サンプルコードでは、拡張子を識別して追加するファイルを選別しています。

まとめ

Windowsフォームアプリのコントロールにエクスプローラーからファイルをドロップしてファイル名などを表示する場合の手順について書きました。

フォームアプリが全盛の時代は、暗記していたようなコードですが、ウェブやスマホアプリが主流になった昨今では、久しぶりに実装してみたらかなり忘れていました。

基本、同じコードの流用でドロップ操作が可能になります。

Windowsフォームアプリのコントロールにファイルをドロップして操作したい人の参考になれば幸いです。

スポンサーリンク

最後までご覧いただき、ありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です