2012-01-19 12 views
4

drag'n'dropに関する簡単な質問があります。フォームがAllowDrop = trueを使用してドロップできるように設定されている新しいWin Formプロジェクトがあります。また、私はWindows 7 64ビットを実行していることに言及する必要があります。Windowsフォームの問題へのドラッグアンドドロップ

念のために、私も

this.DragDrop += new System.Windows.Forms.DragEventHandler(Form1_DragDrop); 

に加入しています。

しかし、私はアプリを実行し、私のデスクトップやエクスプローラから何かをドラッグすると、マウスポインタのアイコンで、私はそれにすべてのファイルをドロップすることができないことを示しています。

Visual StudioがWindowsエクスプローラではない管理者特権で実行されていた問題が、このような質問(Win Vista)を見つけました。しかし、アプリケーションを構築して実行可能ファイルを実行すると、同じ問題が発生します。

私はこれまで数回これをやっており、これを解決する私の方法はできませんでした。私は何が欠けていますか?

+0

おそらくhttp://stackoverflow.com/questions/281706/drag-and-drop-from-windows-file-explorer-onto-a-windows-form-is-not-workingに関連しています – SliverNinja

+0

@SliverNinja - そうです私が言及していたものでしたが、提案された解決法は私のためには機能しませんでした。 – BlueVoodoo

答えて

7

デフォルトでは、ドラッグアンドドロップ操作のターゲットドロップエフェクトは指定されていません(DragDropEffects.None)。したがって、この場合、あなたのコントロールのためのドロップイベントはありません。 (DragEnterまたはDragOverイベントを使用)は、以下に示すように コントロールを使用すると、具体的なDardDropEffectを指定する必要があり、特定のデータのためのドラッグアンドドロップ操作のレシーバできるようにするために:

void Form1_DragDrop(object sender, DragEventArgs e) { 
    object data = e.Data.GetData(DataFormats.FileDrop); 
} 
void Form1_DragEnter(object sender, DragEventArgs e) { 
    if(e.Data.GetDataPresent(DataFormats.FileDrop)) { 
     e.Effect = DragDropEffects.Copy; 
    } 
} 

関連MSDNの記事:Performing a Drag-and-Drop Operation in Windows Forms

+0

ありがとうございます。それがトリックでした。 – BlueVoodoo

1

間違ったイベントを使用していますが、DragEnterイベントを使用してください。

this.DragEnter += new System.Windows.Forms.DragEventHandler(Form1_DragDrop); 
+0

何らかの理由でDragEnterを購読していますが、これは私が望むものではありません。つまり、マウスポインタがフォームに入るとすぐにコードをトリガーします。私はマウスボタンを離したときにトリガされるようにします。 – BlueVoodoo

関連する問題