プロが教えるわが家の防犯対策術!

VB.NETにてDrag&Dropでbmpファイルをピクチャーボックスに
表示させようと思い、こちらで他の方が質問されていた
ソースを加工してテストしています。
画像ファイルをexplolerで掴んでピクチャーボックスの
上まで持ってくるとDragEnterイベントでアクセサリの
ペイントが起動してしまってそこで処理が止まってしまっています。

ブレークポイントを置いてみると
e.Data.GetDataPresentで起動してるようです。
ペイントが起動しないようにしたいのですが
どうすればいいのでしょうか?

どなたかよろしければご教授お願いいたします。

使用ツール:VS2005
OS:WinXpSP2
使用しているソース:
Private Sub pict1_DragEnter(ByVal sender As System.Object, _
ByVal e As System.Windows.Forms.DragEventArgs) Handles picturebox1.DragEnter

  If e.Data.GetDataPresent(DataFormats.FileDrop) Then
e.Effect = DragDropEffects.Copy
End If

End Sub

A 回答 (1件)

投稿されたコードだけでは、どこで何をされているのか判断できません。


取り敢えず、下記のコードを試して見て下さい。
(エラーチェック等はご自分でつけて下さい。)

Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles MyBase.Load
  PictureBox1.AllowDrop = True
End Sub
Private Sub PictureBox1_DragDrop(ByVal sender As Object, _
     ByVal e As System.Windows.Forms.DragEventArgs) Handles PictureBox1.DragDrop
  Dim fileNames() As String = DirectCast(e.Data.GetData(DataFormats.FileDrop, False), String())
  With PictureBox1
    .SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize
    .Image = System.Drawing.Image.FromFile(fileNames(0))
  End With

End Sub
Private Sub PictureBox1_DragEnter(ByVal sender As Object, _
     ByVal e As System.Windows.Forms.DragEventArgs) Handles PictureBox1.DragEnter
  If e.Data.GetDataPresent(DataFormats.FileDrop) Then
    e.Effect = DragDropEffects.Copy
  Else
    e.Effect = DragDropEffects.None
  End If
End Sub
End Class
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
上記ソースでうまくPictureBoxに画像を表示できるとともに
まだ、ペイントが起動してしまいましたが、原因がわかりました。

こちらのデバッグの仕方に問題がありました。
値がどうなるかブレークポイントをつけていたのですが
このときデバッグで表示したウインドウの下にVSで
コードを表示させていました。
そのためEnterでイベントが発生し、ブレークポイントが
あるためVSのウインドウがアクティブになり、画像をVSで
開こうとしてペイントが動いてました。
たまたまずらして実行したときにペイントが起動しないことで
気づくことができました。
お騒がせしました。ありがとうございました!

お礼日時:2010/02/24 14:27

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