ドラッグ&ドロップはファイルやフォルダをコピーしたりするときによく使う操作ですね。
私もメールソフトに添付するとき良く使います。
C#でも簡単にドラッグ&ドロップの機能が使えます。
リストボックスに対して、ファイルやフォルダをドラッグ&ドロップするサンプルです。
ドラッグ&ドロップされたファイルやフォルダのフルパスを取得してリストにに表示します。
ドラッグ&ドロップを有効にする為、AllowDropをTrueにして下さい。
リストボックスのプロパティを設定して下さい。

DragEnter、DragDropのイベントを使います。
リストボックスのイベントを設定して下さい。
ダブルクリックでイベントを作ります。

ドラッグ&ドロップ時のマウスカーソルはサンプルではAllを使用しました。
全6種類ありますので試してみて下さい。
All |
Copy |
Link |
Move |
Scroll |
None |
※Noneはデフォルトのマウスカーソルです。Noneにするとドラッグ&ドロップは行えません。
プログラミング
言語:C#
/// <summary>
/// ドラッグEnter処理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void listBox1_DragEnter(object sender, DragEventArgs e)
{
// ファイル ドロップ形式のデータか判定する
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
// ファイル ドロップ形式の場合
// ドラッグ&ドロップのマウスカーソルエフェクト
// をALLに変更する
e.Effect = DragDropEffects.All;
}
else
{
// ファイル ドロップ形式でない
場合
// ドラッグ&ドロップのマウスカーソルエフェクト
// をデフォルトのNoneに変更する
e.Effect = DragDropEffects.None;
}
}
/// <summary>
/// ドラッグ&ドロップ処理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void listBox1_DragDrop(object sender, DragEventArgs e)
{
// ドラッグ&ドロップされたファイルやフォルダのフルパスを取得する
string[] s = (string[])e.Data.GetData(DataFormats.FileDrop);
// 取得したファイルやフォルダのフルパスをリストボックスに追加する
for (int i = 0; i < s.Length; i++)
{
listBox1.Items.Add(s[i]);
}
}
/// <summary>
/// リストコンソール出力処理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnAllListOut_Click(object sender, EventArgs e)
{
for (int i = 0; i < listBox1.Items.Count; i++)
{
Console.WriteLine($"{listBox1.Items[i]}");
}
}
/// <summary>
/// クリアボタンクリック処理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnClear_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
}
実行結果
画面初期表示です。

ファイルやフォルダをドラッグ&ドロップするとフルパスがリストに表示されます。

リストコンソール出力をクリックするとリストの内容が出力に表示されます。

クリアをクリックするとリストがクリアされます。

以上です。