Windowsアプリケーションでドラッグ&ドロップ処理の作成をします。
対象:Visual C# .NET または Visual C# 2005
1.手順
①ドロップターゲットのAllowDropプロパティをTrueに設定します。
②DragEnterイベントによりオブジェクトにドラッグされたことを検知します。
③Dropイベントによりオブジェクトにドロップされたオブジェクトを取得し、処理を行います。
※例:フォーム上にデータグリッド「dataGridView1」が、存在すると仮定し説明します。
よって、他のオブジェクトの場合、「dataGridView1」の部分を変更して下さい。
private System.Windows.Forms.DataGridView dataGridView1;
2.実際のコード
①VS上で、ドラッグ&ドロップしたいターゲットのオブジェクトの下記のプロパティを変更します。
これにより、ファイルなどをオブジェクト上にドラッグできるようになります。
プロパティ dataGridView1.AllowDrop = True
②下記のイベントは、「dataGridView1」にドラックされた時に発生します。
protected void dataGridView1_DragEnter(object s, DragEventArgs e)
{
// ドラックされたデータ内にファイルが存在するか判定します。
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
//カーソルを取得(カーソルを取得しないとドロップイベントが起動しません。)
e.Effect = DragDropEffects.All;
}
}
③下記のイベントはドラッグしたオブジェクトを「dataGridView1」でドロップした際に発生します。
protected void dataGridView1_DragDrop(object s, DragEventArgs e)
{
//ドラッグされたオブジェクトからファイルパスコレクションを取得
string[] FilePaths = (string[])e.Data.GetData(DataFormats.FileDrop);
//ファイルパスコレクションから各ファイルのフルパスを取得
foreach (string FilePath in FilePaths)
{
//ファイルのフルパスを取得
System.IO.FileInfo file = new System.IO.FileInfo(FilePaths);
}
}
コメント