
VisualStudio2008 C# で開発をしています。
ListViewにエクスプローラーからファイルをドラッグ&ドロップしようとしているのですが、うまくできません。
いろいろと調べて下記の3点を抑えればできるのかと思っていますが、思ったように動きません。
ListViewのAllowDrop=True;
DragEnterイベントでe.Effect = DragDropEffects.Copy;
DragDropイベントでDropした後の処理
きちんと記述しているつもりですが、DragEnterイベントが発生しません。
ちなみに、同じListViewの要素をドラッグ&ドロップするとDragEnterイベントは発生するので、あくまで外部(エクスプローラーなど)からドラッグされたものが受け付けないようです。
何が原因なのでしょうか?
ほかに設定などあるのでしょうか?
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に設定されているのかを確認してみましょう
解決しました。
コーディングなどには何の問題もなく、VisualStudioを「管理者として実行」で動かすとこのような状態になることが分かりました。
ソリューションファイルをダブルクリックして実行すると、ドロップできる状態になりました。
redfox63様
ご丁寧に回答いただき本当にありがとうございました。
No.1
- 回答日時:
DragEnterやDragDropに記述したコードを支障の無い範囲で公開してみましょう
または他人が試して現象を確認できる最小限のコードを提示しましょう
フレームワークは何を使うのか .net Framework 2.0/3.0/3.5
アプリケーションのタイプは何なのか WindowsForm/WebForm
ListViewだから WindowsFormでしょうけど ・・・
AllowDrop=True;
はプロパティで設定したのでしょうか? それともコードですか
ListViewへドラッグした際にカーソルの変化はあるのでしょうか
黒丸に斜線のドロップ禁止のままなのでしょうか
ご返答ありがとうございます。
ご指摘の点を記述させていただきます。
// 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が見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数選択のListBoxでClickイベ...
-
リストビュー内でのドラッグ&...
-
VBAで一時中断したプログラムの...
-
エクセルVBAで画面の大きさを取...
-
getParameterで値が取得できず...
-
Accessの画面更新を一時的に停...
-
ページングが大量発生する原因...
-
MFC ボタンのEnableについて
-
ASP.NetのGridViewで任意の行ク...
-
ASP.net MVC セッションハイジ...
-
formの送信ボタンをテキストに...
-
submitボタンを横一列複数リン...
-
ACCESS2010 WEBブラウザーコン...
-
VBAで画面遷移時のパラメータに...
-
DVD-Rの「セッションを閉じる」...
-
XMLHTTPを用いて認証が必要なUR...
-
えきねっとのログイン画面はどこ?
-
ボタンを押さずにボタンを押す...
-
戻ると、記入フォームの内容が...
-
グリッドビューでのチェックボ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数選択のListBoxでClickイベ...
-
ポストバック時の画面スクロー...
-
C#でドラッグ&ドロップが機能し...
-
ポストバック(__doPostback)へ...
-
Ctrl+vのイベントを解除
-
【ASP.NET】マスターページに配...
-
【VB6】 変数1 = 変数1 Or $H2
-
DragEnterイベントについて(VS...
-
aspxファイル実行時の表示順に...
-
【ASP2.0】TextBoxのフォーカス...
-
リストビュー内でのドラッグ&...
-
[ASP.NET] ページ内でジャンプ。
-
自作exeを常駐させるとPCがシャ...
-
TreeViewの制御について
-
ドラッグドロップ(AllowDrop)に...
-
VBのタイマーイベントについて
-
VBAで一時中断したプログラムの...
-
画面遷移が不正ですと表示されます
-
getParameterで値が取得できず...
-
コネクション・セッション・ト...
おすすめ情報