0
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[C#]ドラッグ&ドロップの使い方

Last updated at Posted at 2019-10-24

D&DしたPDFファイルをSQL Serverに登録+プレビューする方法の記事の一部になります。

#1. C#:ドラッグ&ドロップの使い方
ファイルのドラッグ&ドロップを受け入れる方法。
(内容は、参考に書いたリンクとほぼ同じです)

##1) UI(デザイン)

  • D&D を許可するコントロールの [AllowDrop] プロパティを "True" に設定します。
    図1.png

##2) コード

  • [DragDrop] と [DragEnter] イベントハンドラを実装します。
/// <summary>
/// DragDropのイベントハンドラー
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void pnlDragAndDrop_DragDrop(object sender, DragEventArgs e)
{
  // DataFormats.FileDropを与えて、GetDataPresent()メソッドを呼び出す。
  var files = (string[])e.Data.GetData(DataFormats.FileDrop, false);

  // GetDataの戻り値はstring型の配列であり、
  // 複数のファイルがドロップされた場合には
  // ドロップされた複数のファイル名が取得できる。
  
  for (int i = 0; i < files.Length; i++) {
    // GetDataにより取得したString型の配列から要素を取り出す。
    var fileName = files[i];
    Console.Write(fileName);
  }
}

/// <summary>
/// DragEnterのイベントハンドラー
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void pnlDragAndDrop_DragEnter(object sender, DragEventArgs e)
{
  // マウスポインター形状変更
  //
  // DragDropEffects
  //  Copy  :データがドロップ先にコピーされようとしている状態
  //  Move  :データがドロップ先に移動されようとしている状態
  //  Scroll:データによってドロップ先でスクロールが開始されようとしている状態、あるいは現在スクロール中である状態
  //  All   :上の3つを組み合わせたもの
  //  Link  :データのリンクがドロップ先に作成されようとしている状態
  //  None  :いかなるデータもドロップ先が受け付けようとしない状態

  if (e.Data.GetDataPresent(DataFormats.FileDrop))
  {
    e.Effect = DragDropEffects.Copy;
  }
  else
  {
    e.Effect = DragDropEffects.None;
  }
}

##参考
エクスプローラからファイルのドラッグ&ドロップを受け入れる (C#プログラミング)

0
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?