目次

ドラッグ&ドロップ時の受け取り可能なデータフォーマットの取得 - 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を愛用
掲載日: 2012-06-14
iPentec all rights reserverd.