この記事では、Visual C# アプリケーションでファイルのドラッグ アンド ドロップ機能を提供する方法について説明します。
元の製品バージョン: Visual C++
元の KB 番号: 307966
まとめ
この記事で説明する手順は、Visual C# アプリケーションでファイルのドラッグ アンド ドロップ機能を提供する方法を示しています。 ListBox
コントロールは、ファイルのドラッグ アンド ドロップ プロシージャの保存先として使用されます。
要件
この一覧では、必要な推奨ハードウェア、ソフトウェア、ネットワーク インフラストラクチャ、およびサービス パック (Visual C#) の概要を示します。
この記事では、次のトピックについて理解していることを前提としています。
Windows Forms ListBox control
Windows Forms event handling
サンプルをビルドする手順
ListBox コントロールには、 DragEnter
と DragDrop
の 2 つのドラッグ アンド ドロップ イベントを処理する必要があります。 DragEnter
イベントは、コントロールの境界内でオブジェクトをドラッグするときに発生し、ドラッグするオブジェクトがコントロール上でドロップできるようにするオブジェクトかどうかを判断するために使用されます。 このイベントは、ファイルまたはファイルがコントロールにドラッグされた場合に処理します。 これにより、ドラッグするオブジェクトに応じて、オブジェクトをコントロール上にドラッグしたときに適切なアイコンを表示できます。 DragDrop
イベントは、ドラッグされているオブジェクトがコントロールで解放されたときに発生します。 このイベントを処理して、オブジェクトを取得します。 Data オブジェクトは、データを取得するために使用されます。
Data オブジェクトの GetData
メソッドは、 ListBox
コントロールにドラッグされたファイルの完全なパス名を含む文字列の配列を返します。 このファイル パス情報を使用して、ファイルに必要な操作を実行できます。 たとえば、 System.IO
名前空間のクラスを使用して、ファイルを開いて読み取ったり、ファイルを移動したり、ファイルを新しい場所にコピーしたりできます。 この例では、 ListBox
コントロールにドラッグされるファイルへの完全なパスを追加するだけです。
Visual C# アプリケーションでファイルのドラッグ アンド ドロップ機能を提供するには、次の手順に従います。
Visual C# .NET または Visual C# 2005 で新しいWindows フォーム アプリケーションを作成します。 Form1 は既定で作成されます。
ツールボックスを使用して、Form1 に
ListBox
コントロールを追加します。Properties ウィンドウで、オブジェクトをコントロールにドラッグできるようにするには、
ListBox
コントロールのAllowDrop
プロパティを True に変更します。ソリューション エクスプローラーでForm1を右クリックし、[コードの表示] をクリック。
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; }
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 サイトを参照してください。