ドラッグ&ドロップ時の受け取り可能なデータフォーマットの取得 - C#
ドラッグ&ドロップの際のアプリケーションで受け取り可能なデータフォーマットを取得するコードを紹介します。
UI
以下のUIを作成します。フォームにテキストボックスを配置し、Multilineプロパティを"true"にします。またフォームのAllowDropプロパティを"true"に設定します。
コード
以下のコードを記述します。フォームのDragEnterイベントを実装します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace AcceptWebBrowserLinkDragAndDrop
{
public partial class FormMain : Form
{
private const uint WM_DROPFILES = 0x233;
private const uint WM_COPYDATA = 0x004A;
private const uint WM_COPYGLOBALDATA = 0x0049;
private const uint MSGFLT_ADD = 1;
public FormMain()
{
InitializeComponent();
}
private void FormMain_DragEnter(object sender, DragEventArgs e)
{
string[] formats = e.Data.GetFormats();
foreach (string s in formats) {
textBox1.Text += s + "\r\n";
}
}
}
}
解説
DragEnterイベントでドロップソースの要素がウィンドウに入ると
string[] formats = e.Data.GetFormats();
GetFormatsメソッドにて、ドロップソースのフォーマット形式を取得します。戻り値はstring型の配列で取得できます。
foreach (string s in formats) {
textBox1.Text += s + "\r\n";
}
foreachループでstring型の配列要素を一つずつ取り出しテキストボックスに表示します。
実行結果
プロジェクトを実行します。エクスプローラからファイルをドラッグして、ウィンドウにポインタを入れると受け取り可能なフォーマットの一覧がテキストボックスに表示されます。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用