ドラッグ&ドロップ機能を 実装してみよう

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●
●●●●
●●●●●
作って学ぶ
● ● ● ●Visual Basic .NET
●●●●●
●●●●
●●●●●
●●●●
●●●●●
●●●●
●●●●●
●●●●
●●●●●
●●●●
●●●●●
●●●●
●●●●●
●●●●
●●●●●
●●●●
瀬戸 遥
●●●●●
SETO, Haruka
●●●●
http://www.big.or.jp/ ~ seto/
●●●●●
http://hp.vector.co.jp/authors/VA006682/
●●●●
●●●●●
●●●●
●●●●●
●●●●
●●●●●
●●●●
●●●●●
●●●●
●●●●●
●●●●
そこで、今月はテキストデータを
●●●●●
Technology Tools
●●●●
ドラッグ&ドロップする機能をプ
●●●●●
✓ Visual Basic .NET
●●●●
ログラムに実装する基本的な方法
●●●●●
Visual C# .NET
●●●●
今月は、ドラッグ&ドロップを
について紹介します。
SQL Server 2000
●●●●●
使ったプログラムにチャレンジして
●●●●
Oracle 9i
●●●●●
みます。
●●●●
Access 2002
●●●●●
ご存知のとおり、ドラッグ&ド
ASP.NET
●●●●
●●●●●
Internet Information Services
ロップとは、マウスを使ってデータ
●●●●
Other
:
●●●●●
を移動して、いろいろな処理を実
●●●●
はじめに、ひとつのアプリケーシ
行する操作です。
●●●●●
Level
●●●●
ョン内でドラッグ&ドロップ操作
この操作には、
「アプリケーショ
●●●●●
●●●●
ン内でのドラッグ&ドロップ」と、 を行なう方法についてまとめてお
●●●●●
●●●●
きます。
「アプリケーション間でのドラッ
Samples
●●●●●
ドラッグ&ドロップ機能を実装
グ&ドロップ」という2種類があり
●●●●
・この記事で取り上げたソースコードおよび
●●●●●
サンプルプログラムは、付録CD-ROMの
するには、データをドラッグする側
ます。
●●●●
¥DOTNET¥TAMAHIYO ディレクトリ
●●●●●
に収録しています。
と、データがドロップされる側のコ
このようなドラッグ&ドロップ操
●●●●
¥DRAGDROP
●●●●●
ントロールで次の処理を行ないま
作を実現するには、データを送る
今回のサンプル
●●●●
●●●●●
す。
(ドラッグする)側と受け取る(ド
●●●●
ロップされる)側にそれぞれ処理が
●●●●●
●●●●
●データをドラッグする側
必要になります。
●●●●●
●●●●
マウスイベントなどを使って、Do
また、ドラッグ&ドロップで受け
●●●●●
●●●●
DragDropメソッドを実行します。
渡すデータにはいろいろな種類が
●●●●●
このメソッドは、ドラッグ&ドロッ
あり、それを事前に指定する必要
●●●●
●●●●●
プ 操作を開始するメソッドです。
があります。
●●●●
●●●●●
●●●●
●●●●●
●●●
●●●
●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●
94● dotNET
Magazine
2005
April
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
作って学ぶ
Visual Basic .NET
最終回
ドラッグ&ドロップ機能を
実装してみよう
2種類のドラッグ
&ドロップ
ひとつの
アプリケーション
に実装する
★ ★ ★ ★ ★
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●
ドラッグ&ドロップ機能を実装してみよう ● ● ●
●●●●
●●●
●●●●
●●●
●●●●
●●●
●●●●
●●●
図1:ドラッグ&ド
引数にドラッグするデータ形式や、データをコピーする
●●●●
ロップでLabelコン
●●●
のか移動するのかなどのドラッグ&ドロップ操作の効果
トロールに表示
●●●●
●●●
を指定します。
●●●●
●●●
●●●●
●●●
●データがドロップされる側
●●●●
まず、データを受け取るコントロールの、AllowDrop
●●●
●●●●
プロパティをTrueにします。このプロパティをTrueに
●●●
●●●●
すると、コントロールはデータを受け入れることができ
●●●
●●●●
るようになります。これはプロパティウィンドウで設定
●●●
可能です。
●●●●
●●●
ここで作成するのは、TextBoxコントロールに入力さ
●●●●
●●●
れたデータを、ドラッグ&ドロップでLabelコントロー
DragEnterイベント
●●●●
●●●
ルに表示するプログラムです(図1)
。
続いて、DragEnterイベントで、データが受け入れら
●●●●
●●●
れる形式のものなのかをチェックするコードを記述しま
●●●●
●コントロールの配置
す。
●●●
●●●●
フォームにTextBoxコントロールとLabelコントロー
DragEnterイベントは、ユーザーがドラッグ&ドロッ
●●●
●●●●
ルを配置します。
プ操作を開始し、最初にマウスカーソルをコントロール
●●●
●●●●
そして、プロパティウィンドウでLabelコントロール
上にドラッグすると発生します。このイベントプロシー
●●●
のAllowDrop プロパティをTrue にします。これで、
ジャの引数DragEventArgsを使い、DataObjectクラス
●●●●
●●●
Labelコントロールはデータのドロップを受け入れるこ
のGetDataPresentメソッドで、ドロップされたデータ
●●●●
●●●
とができるようになります。
が、指定した形式に関連付けられているかどうかを確認
●●●●
●●●
します。確認後、ドラッグ&ドロップ操作のターゲット
●●●●
●●●
●ドラッグする側(TextBox)
のドロップ効果を設定します。
●●●●
次に、データをドラッグするTextBoxコントロールの
●●●
●●●●
処理を作成します。
DragDropイベント
●●●
●●●●
ここでは、MouseLeaveイベントを使い、Textプロパ
受け入れられるデータであることを確認できたら、
●●●
●●●●
ティに格納されているデータをすべて一括でLabelコン
DragDropイベントでデータを処理します。
●●●
トロールにドロップするようにします。もちろん、プロ
DragDropイベントは、ドラッグ&ドロップ操作が完
●●●●
●●●
グラムの機能によっては、MouseDownなど他のマウス
了したときに発生します。このイベントプロシージャの
●●●●
●●●
イベントを使ってドラッグ処理を実行してもかまいませ
引数「DragEventArgs」と、DataObjectクラスのGet
●●●●
●●●
ん。
Dataメソッドを使うことで、ドロップされたデータを受
●●●●
●●●
では早速、MouseLeaveイベントプロシージャを作成
け取ることができます。
●●●●
してみましょう。
●●●
●●●●
●●●
Private Sub TextBox1_MouseLeave(ByVal sender As Object, _
●●●●
ByVal e As System.EventArgs) Handles
●●●
●●●●
TextBox1.MouseLeave
●●●
早速、ドラッグ&ドロップ操作でテキストデータをコ
●●●●
End Sub
●●●
ピーするプログラムを作ってみましょう。
●●●●
●●●
●●●●
●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
● ●Magazine
● ● ●2005
●●
● ●95● ● ● ● ● ●
dotNET
April
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
テキストデータの
ドラッグ&ドロップ