DOBON.NET

Drag&Dropされたファイルのファイル名を取得する

エクスプローラからDrag&Dropされたファイルのファイル名(フルパス)を取得する方法です。

次の例ではリストボックスコントロールListBox1にDrag&Dropされたすべてのファイルのファイル名を表示しています。ListBox1のAllowDropプロパティをTrueにしてください。

VB.NET
コードを隠すコードを選択
Private Sub ListBox1_DragEnter(ByVal sender As Object, _
        ByVal e As System.Windows.Forms.DragEventArgs) _
        Handles ListBox1.DragEnter
    'コントロール内にドラッグされたとき実行される
    If e.Data.GetDataPresent(DataFormats.FileDrop) Then
        'ドラッグされたデータ形式を調べ、ファイルのときはコピーとする
        e.Effect = DragDropEffects.Copy
    Else
        'ファイル以外は受け付けない
        e.Effect = DragDropEffects.None
    End If
End Sub

Private Sub ListBox1_DragDrop(ByVal sender As Object, _
        ByVal e As System.Windows.Forms.DragEventArgs) _
        Handles ListBox1.DragDrop
    'コントロール内にドロップされたとき実行される
    'ドロップされたすべてのファイル名を取得する
    Dim fileName As String() = CType( _
        e.Data.GetData(DataFormats.FileDrop, False), _
        String())
    'ListBoxに追加する
    ListBox1.Items.AddRange(fileName)
End Sub
C#
コードを隠すコードを選択
//ListBox1のDragEnterイベントハンドラ
private void ListBox1_DragEnter(object sender,
    System.Windows.Forms.DragEventArgs e)
{
    //コントロール内にドラッグされたとき実行される
    if (e.Data.GetDataPresent(DataFormats.FileDrop))
        //ドラッグされたデータ形式を調べ、ファイルのときはコピーとする
        e.Effect = DragDropEffects.Copy;
    else
        //ファイル以外は受け付けない
        e.Effect = DragDropEffects.None;
}

//ListBox1のDragDropイベントハンドラ
private void ListBox1_DragDrop(object sender,
    System.Windows.Forms.DragEventArgs e)
{
    //コントロール内にドロップされたとき実行される
    //ドロップされたすべてのファイル名を取得する
    string[] fileName =
        (string[]) e.Data.GetData(DataFormats.FileDrop, false);
    //ListBoxに追加する
    ListBox1.Items.AddRange(fileName);
}

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • イベントハンドラの意味が分からない、C#のコードをそのまま書いても動かないという方は、こちらをご覧ください。
  • .NET Tipsをご利用いただく際は、注意事項をお守りください。
共有する

この記事への評価

この記事へのコメント

この記事に関するコメントを投稿するには、下のボタンをクリックしてください。投稿フォームへ移動します。通常のご質問、ご意見等は掲示板へご投稿ください。