C#_ドラッグ & ドロップ のコード

ドラッグ & ドロップ した画像 を pictureBox に表示。

drag:引きずる。
drop:落とす。

【前提】
・Panel設置。
・Panel の AllowDropプロパティをTrue
・PictureBox 設置。

 

ファイルが Form や Panel などの
コント ロール内にドラッグされると発生する。

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

 

ドロップされた時に発生。

private void panel_DragDrop(object sender, DragEventArgs e)
{
    //配列でなければならない
    string[ ] fileName = (string[ ])e.Data.GetData(DataFormats.FileDrop, false);
    try
    {
        Image bmp = Bitmap.FromFile(fileName[0]);
        pictureBox.Image = Bitmap.FromFile(fileName[0]);
        Text = fileName[0];
    }
    catch
    {
        MessageBox.Show("Error");
    }
}

 

コード 説明
Data.GetDataPresent

指定した形式データがクリップボード
あるか調べる

第二引数が false だと形式を調べるだけだが、
true にすると変換可能かどうかも調べる。

第二引数がない場合、変換出来るか否か
または指定した形式があるか否かを調べる。

DataFormats.FileDrop

e.Data.GetDataPresent などに
DataFormats.FileDrop を指定することで、
ファイル等がドロップされた場合のみ
受け付けるようにしている。

DataFormats クラスのフィールドは他に
Bitmap、Rtf、Text などがある。

Data.GetData

指定された形式でデータを返す

第二引数が true だとデータを指定された形式に
変換する。
false だと変換しない。

DragDropEffects.Copy  ドラッグ元からのデータを、ドロップ先にコピー
DragDropEffects.None  ドラッグ元からのデータは、受け入れられない

 

 

こちらから。
https://dobon.net/vb/dotnet/control/droppedfile.html
https://www.ipentec.com/document/document.aspx?page=csharp-accept-drag-and-drop-from-explorer
https://dobon.net/vb/dotnet/system/clipboardformats.html
http://program.station.ez-net.jp/special/handbook/csharp/file/drop.asp
https://msdn.microsoft.com/ja-jp/library/system.windows.forms.dataformats(v=vs.110).aspx
https://msdn.microsoft.com/ja-jp/library/ms597426(v=vs.110).aspx
https://msdn.microsoft.com/ja-jp/library/ms597422(v=vs.110).aspx
https://msdn.microsoft.com/ja-jp/library/system.windows.forms.dragdropeffects(v=vs.110).aspx
http://moririring.hatenablog.com/entry/20120319/1332107166

 

以上。