C#で、エクスプローラーなどからファイルをドロップした際のイベントを追加する手順を備忘録的に投稿します。
プロパティ画面でイベントを追加
ファイルのドロップイベントを取得するには、コントロールの[プロパティ]画面からイベントハンドラーを追加します。
今回はフォームへのドロップイベントを追加するのでフォーム(Form1)を選択した状態で[プロパティ]画面を開いて[DragDrop]と[DragEnter]を追加します。
一覧をダブルクリックすると、自動的にイベント名が生成されて、それぞれのプロシージャがコード画面に追加されます。
手作業でイベントを追加
追加されたイベントにコードを追加をしていきます。
DragEnterイベントには、フォーム上にファイルがドラッグされた場合に、マウスポインターを変更する処理を追加します。
private void Form1_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
e.Effect = DragDropEffects.Copy;
}
}
これは、Windowsアプリとしてはテンプレート的な挙動なので、自分だけ使う場合には追加する必要はありません。
DragDropイベントには、フォーム上にファイルがドロップされた際の実務的なコードを追加していきます。
private void Form1_DragDrop(object sender, DragEventArgs e)
{
//ドロップされたファイル名を取得
String FileName in (string[])e.Data.GetData(DataFormats.FileDrop);
}
こんな感じで、ドロップされたファイル名を取得できます。
後は、アプリの内容に合わせて実装をします。
ビルド後に、実行したアプリのフォーム上にエクスプローラーなどからファイルをドラッグするとマウスポインターが変更され、実際にドロップするとファイル名が取得されるようになります。
まとめ
C#でマウスのドラッグ時のイベントを追加する場合には[プロパティ]画面を利用して、DragEnterとDragDropの2つのイベントを追加して、それぞれに追加されたプロシージャーにコードを追加して実装を行います。
DragEnterイベントは、ファイルの事前チェックやドロップする際にマウスポインターを変更する処理になるため、自分しか使わないようなアプリの場合には無理に追加は必要なくDragDropイベントのみでも追加ができます。
C#でファイルのドロップ時のイベントを追加したい方の参考になれば幸いです。
スポンサーリンク
最後までご覧いただき、ありがとうございます。