トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

C#/Code/DragAndDrop

一部の情報は非常に古いもの(20年以上前〜)ですので、利用する際はご注意ください(Java 1.4 とか .NET 1.0 とか、Windows 2000 とか)
お問い合せは wiki@shise.net まで。Gmail に転送されるので、スパムは全部カットされます。


 

ドラッグアンドドロップ


なんか、ドラッグ&ドロップを受け付けるプログラムを書くたびに、
毎回、同じようなコードを書いてたのでメモ

コード


private void Form1_Load(object sender, EventArgs e)
{
    this.AllowDrop = true;
    this.DragEnter += new DragEventHandler(file_DragEnter);
    this.DragDrop += new DragEventHandler(file_DragDrop);
}

private void file_DragEnter(object sender, DragEventArgs e)
{
    if (e.Data.GetDataPresent(DataFormats.FileDrop))
    {
        e.Effect = DragDropEffects.All;
    }
    else
    {
        e.Effect = DragDropEffects.None;
    }
}

private void file_DragDrop(object sender, DragEventArgs e)
{
    List<string> list = new List<string>();

    string[] s = (string[])e.Data.GetData(DataFormats.FileDrop, false);
    
    for (int i = 0; i < s.Length; i++)
    {
        GetFiles(list, s[i]);
    }

    Open(list[0]);
}

private void GetFiles(List<string> list, string path)
{
    if (System.IO.File.Exists(path))
    {
        list.Add(path);
    }
    else if (System.IO.Directory.Exists(path))
    {
        foreach (string file in System.IO.Directory.GetFiles(path))
        {
            GetFiles(list, file);
        }
        foreach (string file in System.IO.Directory.GetDirectories(path))
        {
            GetFiles(list, file);
        }
    }
}

private string filepath = null;
private void Open(string file)
{
    filepath = file;
}