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を愛用