- PR -

AllowDrop=True でもマウスが進入禁止マークでドラッグアンドドロップできない。

1
投稿者投稿内容
くろは
会議室デビュー日: 2006/12/14
投稿数: 8
投稿日時: 2008-06-11 19:42
VB初心者です。
Windows XP Pro SP3、VisualStudio2008 VB.net を使って開発をやりはじめました。

FormとLabelが1つだけのアプリです。
テキストファイルをフォーム上にドラッグアンドドロップするとファイルを読み込んでCSVファイルを出力する処理を行おうとしています。

ドラッグアンドドロップについて色々と調べたところ、

・AllowDropプロパティをTrueにして
・DragEnterイベントでe.Effect = DragDropEffects.Copyとして
・DragDropイベントで e.Data.GetDataをつかってデータを受け取る。
(http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard22.htm から引用)

がポイントであるという事で、こちらのサイトを参考にしてやってみましたが、ビルド後のexeを実行してフォームにファイルをドラッグしても進入禁止のマークのままドロップができないような状況です。
FormとLabelのAllowDropプロパティにはTrueを設定してあるので、コード無しの状態でも進入禁止マークは出なくなるものと思っていましたがそうでもないようです。
コードを書き込んでもダメでした。

いったんプロパティをFalseにしてからもう一度Trueに直すとか、意味の無さそうな事もしてみましたがダメでした。
他に設定すべきところ、調べてみるところはあるのでしょうか?

よろしくお願いします。
wata
会議室デビュー日: 2008/06/10
投稿数: 1
投稿日時: 2008-06-12 00:22
文面からDragEnterイベントハンドラが未実装と解釈しましたが、それが原因だと思います。まさに、「DragEnterイベントでe.Effect = DragDropEffects.Copy」でドロップの受け入れ状態を制御しますので。
くろは
会議室デビュー日: 2006/12/14
投稿数: 8
投稿日時: 2008-06-12 09:02
wata様
ありがとうございます!!できました!
まさに、「e.Effect = DragDropEffects.Copy」でした。

If e.Data.GetDataPresent(GetType(String)) Then
e.Effect = DragDropEffects.Copy
End If

If文をコメントアウトしたらできました。
AllowDrop=TrueだけでDropはできるようになるものと思い込んでいました。
1

スキルアップ/キャリアアップ(JOB@IT)