C#を攻略しよう

c#

エクスプローラーからのドラッグアンドドロップ

エクスプローラーからリストボックスへファイルをドラッグアンドドラッグするサンプルプログラムです。
ドラッグアンドドラッグからファイル名をリストボックスに追加して、リストが選択されたら、そのフルパスをテキストボックスに表示します。

リストボックス間でドラッグアンドドロップ
リストボックス内でドラッグアンドドロップ
 エクスプローラーからのドラッグ&ドロップ

ドラッグアンドドロップ


[TOP]


1.「ファイル」→「新しいプロジェクト」→「WINDOWSアプリケーション」を選択。

2.ツールボックスから「ListBox」と「TextBox」を上図のように配置する。

3.「listBox1」の「AllowDrop」プロバティを「true」にする。

4.「listBox1」から「DragEnter」イベントと「DragDrop」イベント、「SelectedIndexChanged」イベントを選択し 、次のコードを入力する。

public partial class Form1 : Form
{

     string[] fpath = new string[1];//フルパスを格納する配列
     int len=0;//動的配列のサイズ

<中略>

private void listBox1_DragEnter(object sender, DragEventArgs e)
{

     //ドラッグ&ドロップの効果をコピーに設定
     e.Effect = DragDropEffects.Copy;
}

private void listBox1_DragDrop(object sender, DragEventArgs e)
{

     //ドラッグ&ドロップしたファイル名をフルパスで取得する
     string[] fname = (string[])e.Data.GetData(DataFormats.FileDrop);
     //複数のファイルを選択した場合、これらを展開する
     foreach (string ff in fname)
     {
         //フルパスからファイル名だけを取得する
         listBox1.Items.Add(ff.Substring(ff.LastIndexOf('\\')+1));
     }
     //配列のサイズを拡大し、元の配列をコピーする
     fpath.CopyTo(fpath=new string[len+fname.Length+1], 0);
     //ドロップしたファイルのフルパスを配列に追加
     fname.CopyTo(fpath, len);
     len += fname.Length;

}

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{

     int ind = listBox1.SelectedIndex;
     textBox1.Text = fpath[ind];
}

メソッドの上にマウスポインタをもってくると、ポップアップヒントが表示されます。またF1キーを押すと、ヘルプが立ち上がります。

 

 

※当サイトは、リンクフリーです。