Internet ExplorerからURLのドラッグ&ドロップを受け入れる - C#

Internet ExplorerからのURLのドラッグ&ドロップを受け入れるコードを紹介します。

UI

以下のUIを作成します。フォームにTextBoxを配置し、Multilineプロパティをtrueにし、複数行テキストボックスにします。また、フォームのAllowDropプロパティを"true"に設定します。

コード

以下のコードを記述します。フォームのDragEnter, DragDropイベントを実装します。
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;

namespace AcceptWebBrowserDragAndDrop
{
  public partial class FormMain : Form
  {
    public FormMain()
    {
      InitializeComponent();
    }

    private void FormMain_DragEnter(object sender, DragEventArgs e)
    {
      if (e.Data.GetDataPresent("UniformResourceLocator") == true) {
        e.Effect = DragDropEffects.Link;
      }
      else {
        e.Effect = DragDropEffects.None;
      }
    }

    private void FormMain_DragDrop(object sender, DragEventArgs e)
    {
      string url = e.Data.GetData(DataFormats.Text).ToString();
      textBox1.Text += url+"\r\n";
    }
  }
}

解説

DragEnterイベント

if (e.Data.GetDataPresent("UniformResourceLocator") == true) {
  e.Effect = DragDropEffects.Link;
}
else {
  e.Effect = DragDropEffects.None;
}
DragEventArgs のDataプロパティのGetDataPresendメソッドに"UniformResourceLocator"を与えて呼び出すことで、ウェブブラウザからのURLドロップかを判定できます。WebブラウザのURLドロップの場合は、DragDropEffectsをLinkに設定し、受け入れ可能であることを示します。それ以外の場合は受け入れない動作とします。

DragDropイベント

string url = e.Data.GetData(DataFormats.Text).ToString();
textBox1.Text += url+"\r\n";
DragEventArgs のDataプロパティのGetDataメソッドを呼び出し、ドロップされたURLを取得します。取得したURLの文字列をTextBoxに表示します。

実行結果

プロジェクトを実行します。下図のウィンドウが表示されます。


Internet Explorerを起動し、サイトを表示します。


URLボックスの左端にあるアイコンフォームへドラッグします。


フォームにマウスポインタが入ると、下図の受け入れ可能な状態のマウスポインタに変わります。


ドロップするとInternet Explorerで表示しているサイトのURLがテキストボックスに表示されます。


著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
掲載日: 2012-06-13
iPentec all rights reserverd.