• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:DragEnterイベントについて(VS2008、ドラッグ&ドロップ))

ドラッグ&ドロップでListViewにファイルを追加する方法

このQ&Aのポイント
  • VisualStudio2008 C# で開発をしている場合、ListViewにエクスプローラーからファイルをドラッグ&ドロップする方法を調べているかもしれません。しかし、うまく動作しない場合があります。AllowDropプロパティの設定やDragEnterイベント、DragDropイベントの処理など、いくつかのポイントを確認する必要があります。
  • まずは、ListViewのAllowDropプロパティをTrueに設定します。これにより、ListViewにドラッグ&ドロップが許可されます。次に、DragEnterイベントを実装し、e.EffectにDragDropEffects.Copyを設定します。これにより、ドラッグ中のエフェクトを指定することができます。最後に、DragDropイベントでドロップされたファイルの処理を行います。
  • しかし、DragEnterイベントが発生しない場合もあります。これは、ドラッグされたものが外部からのものである場合、つまりエクスプローラーなどからのドラッグの場合に起こる問題です。この場合、別の設定が必要な場合があります。原因を調べるためには、他の可能な設定や処理漏れなども確認する必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

ん~ CS2008の環境が無いので ・・・ VirtualPC2007 + Vista Ultimate +VB2008EE といった環境で フォームにリストビューを貼り付け Form_Loadで ListView1.AllowDrop=True ListView1_DragEnterで e.Effect = DragDropEffects.Copy としただけのフォームで確認しましたが ドロップ禁止状態にはなりませんでした DragEnterイベントも発生しております ListViewにMouseDownイベントを追加して MessageBox.Show( listBox1.AllowDrop.ToString() ); などで本当に Trueに設定されているのかを確認してみましょう

ws_akiyama
質問者

お礼

解決しました。 コーディングなどには何の問題もなく、VisualStudioを「管理者として実行」で動かすとこのような状態になることが分かりました。 ソリューションファイルをダブルクリックして実行すると、ドロップできる状態になりました。 redfox63様 ご丁寧に回答いただき本当にありがとうございました。

その他の回答 (1)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

DragEnterやDragDropに記述したコードを支障の無い範囲で公開してみましょう または他人が試して現象を確認できる最小限のコードを提示しましょう フレームワークは何を使うのか .net Framework 2.0/3.0/3.5 アプリケーションのタイプは何なのか WindowsForm/WebForm   ListViewだから WindowsFormでしょうけど ・・・ AllowDrop=True; はプロパティで設定したのでしょうか? それともコードですか ListViewへドラッグした際にカーソルの変化はあるのでしょうか 黒丸に斜線のドロップ禁止のままなのでしょうか

ws_akiyama
質問者

お礼

ご返答ありがとうございます。 ご指摘の点を記述させていただきます。 // DragEnter private void ListView1_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) { e.Effect = DragDropEffects.Copy; } } //DragDrop(ここの内容は特に意味はありません) private void ListView1_DragDrop(object sender, DragEventArgs e) { string[] files = (string[])e.Data.GetData(DataFormats.FileDrop); } 【環境】 .net Framework3.5 WindowsForm AllowDropはプロパティでもコードでも同じでした。 カーソルの変化もなく、ご指摘のドロップ禁止状態のままです。 DragEnterの↓の部分を消してみても同じでした。 if (e.Data.GetDataPresent(DataFormats.FileDrop)) ちなみにOSはVistaを使っています。

関連するQ&A