次の方法で共有


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

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

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

まとめ

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

要件

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

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

  • Windows Forms ListBox control
  • Windows Forms event handling

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

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

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

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

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

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

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

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

  5. DragEnter イベントを処理するには、windows フォーム デザイナーが 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 サイトを参照してください。