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# アプリケーションでファイルのドラッグ アンド ドロップ機能を提供するには、次の手順に従います。
Visual C# .NET または Visual C# 2005 で新しいWindows フォーム アプリケーションを作成します。 Form1 は既定で作成されます。
ツールボックスを使用して、Form1 にコントロールを追加
ListBox
します。[ プロパティ ] ウィンドウで、コントロールのプロパティを
AllowDrop
ListBox
True に変更して、オブジェクトをコントロールにドラッグできるようにします。ソリューション エクスプローラーで、Form1 を右クリックし、[コードの表示] をクリックします。
イベントを
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; }
イベントを
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]); }
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);
プロジェクトをビルドして実行します。
デスクトップまたは別のフォルダーから ListBox コントロールに 1 つ以上のファイルをドラッグします。 ファイルの完全パスがコントロールに
ListBox
追加されます。
関連情報
詳細については、次の Web サイトを参照してください。