アプリ版:「スタンプのみでお礼する」機能のリリースについて

VisualStudio2008 C# で開発をしています。
ListViewにエクスプローラーからファイルをドラッグ&ドロップしようとしているのですが、うまくできません。
いろいろと調べて下記の3点を抑えればできるのかと思っていますが、思ったように動きません。

ListViewのAllowDrop=True;
DragEnterイベントでe.Effect = DragDropEffects.Copy;
DragDropイベントでDropした後の処理

きちんと記述しているつもりですが、DragEnterイベントが発生しません。
ちなみに、同じListViewの要素をドラッグ&ドロップするとDragEnterイベントは発生するので、あくまで外部(エクスプローラーなど)からドラッグされたものが受け付けないようです。

何が原因なのでしょうか?
ほかに設定などあるのでしょうか?

A 回答 (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に設定されているのかを確認してみましょう
    • good
    • 0
この回答へのお礼

解決しました。

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

redfox63様
ご丁寧に回答いただき本当にありがとうございました。

お礼日時:2008/11/11 09:12

DragEnterやDragDropに記述したコードを支障の無い範囲で公開してみましょう


または他人が試して現象を確認できる最小限のコードを提示しましょう

フレームワークは何を使うのか .net Framework 2.0/3.0/3.5
アプリケーションのタイプは何なのか WindowsForm/WebForm
  ListViewだから WindowsFormでしょうけど ・・・

AllowDrop=True;
はプロパティで設定したのでしょうか? それともコードですか

ListViewへドラッグした際にカーソルの変化はあるのでしょうか
黒丸に斜線のドロップ禁止のままなのでしょうか
    • good
    • 0
この回答へのお礼

ご返答ありがとうございます。
ご指摘の点を記述させていただきます。

// 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を使っています。

お礼日時:2008/11/10 17:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!