Visual C# アプリケーションでファイルのドラッグ アンド ドロップ機能を提供する

この記事では、Visual C# アプリケーションでファイルのドラッグ アンド ドロップ機能を提供する方法について説明します。

元の製品バージョン: Visual C++
元の KB 番号: 307966

概要

この記事で説明する手順は、Visual C# アプリケーションでファイルのドラッグ アンド ドロップ機能を提供する方法を示しています。 ListBoxコントロールは、ファイルのドラッグ アンド ドロップ プロシージャの保存先として使用されます。

要件

この一覧では、必要なハードウェア、ソフトウェア、ネットワーク インフラストラクチャ、およびサービス パック (Visual C#) の概要を示します。

この記事では、次のトピックについて理解していることを前提としています。

  • Windows Forms ListBox control
  • Windows Forms event handling

サンプルをビルドする手順

ListBox コントロールには、 と DragDropの 2 つのドラッグ アンド ドロップ イベントを処理DragEnterする必要があります。 このイベントは DragEnter 、コントロールの境界内でオブジェクトをドラッグしたときに発生し、ドラッグされているオブジェクトがコントロールに対してドロップすることを許可するオブジェクトであるかどうかを判断するために使用されます。 このイベントは、ファイルまたはファイルがコントロールにドラッグされた場合に処理します。 これにより、ドラッグするオブジェクトに応じて、コントロールの上にオブジェクトをドラッグしたときに適切なアイコンを表示できます。 このイベントは DragDrop 、ドラッグされているオブジェクトがコントロールで解放されたときに発生します。 オブジェクトを取得するには、このイベントを処理します。 Data オブジェクトは、データの取得に使用されます。

Data オブジェクトの GetData メソッドは、コントロールにドラッグされたファイルの完全なパス名を含む文字列の配列を ListBox 返します。 このファイル パス情報を使用して、ファイルに必要な操作を実行できます。 たとえば、名前空間のクラスを System.IO 使用して、ファイルを開いて読み取ったり、ファイルを移動したり、ファイルを新しい場所にコピーしたりできます。 この例では、コントロールにドラッグされたファイルへの完全なパスを ListBox 追加するだけです。

Visual C# アプリケーションでファイルのドラッグ アンド ドロップ機能を提供するには、次の手順に従います。

  1. Visual C# .NET または Visual C# 2005 で新しいWindows フォーム アプリケーションを作成します。 Form1 は既定で作成されます。

  2. ツールボックスを使用して、Form1 にコントロールを追加ListBoxします。

  3. [ プロパティ ] ウィンドウで、コントロールのプロパティを AllowDropListBoxTrue に変更して、オブジェクトをコントロールにドラッグできるようにします。

  4. ソリューション エクスプローラーで、Form1 を右クリックし、[コードの表示] をクリックします。

  5. イベントをDragEnter処理するには、Windows フォーム Designerがクラスで生成するコード セクションの下に次のメソッドをForm1追加します。

    private void listBox1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
    {
        if(e.Data.GetDataPresent(DataFormats.FileDrop))
            e.Effect = DragDropEffects.All;
        else
            e.Effect = DragDropEffects.None;
    }
    
  6. イベントを DragDrop 処理するには、手順 5 で追加した Form1 メソッドの直後に、次のメソッドを クラスに追加します。

    private void listBox1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
    {
        string[] s = (string[]) e.Data.GetData(DataFormats.FileDrop, false);
        int i;
        for(i = 0; i < s.Length; i++)
            listBox1.Items.Add(s[i]);
    }
    
  7. 2 つのイベント ハンドラーをコントロール イベントに関連付けるには、 の呼び出しInitializeComponentの後にコンストラクターにForm1次のコードを追加します。

    this.listBox1.DragDrop += new
         System.Windows.Forms.DragEventHandler(this.listBox1_DragDrop);
    this.listBox1.DragEnter += new
         System.Windows.Forms.DragEventHandler(this.listBox1_DragEnter);
    
  8. プロジェクトをビルドして実行します。

  9. デスクトップまたは別のフォルダーから ListBox コントロールに 1 つ以上のファイルをドラッグします。 ファイルの完全パスがコントロールに ListBox 追加されます。

関連情報

詳細については、次の Web サイトを参照してください。