none
关于PICTUREBOX的DRAGDROP事件 RRS feed

答案

  • Code Snippet

     Private Sub PictureBox1_DragDrop(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles PictureBox1.DragDrop
            PictureBox1.Image = Image.FromFile(CType(e.Data.GetData(DataFormats.FileDrop), Array).GetValue(0).ToString)
        End Sub

     

        Private Sub PictureBox1_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles PictureBox1.DragEnter
            e.Effect = DragDropEffects.Move
        End Sub

     

        Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            PictureBox1.AllowDrop = True
        End Sub

     

     

    2008年4月20日 6:52
    版主

全部回复

  • Code Snippet

     Private Sub PictureBox1_DragDrop(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles PictureBox1.DragDrop
            PictureBox1.Image = Image.FromFile(CType(e.Data.GetData(DataFormats.FileDrop), Array).GetValue(0).ToString)
        End Sub

     

        Private Sub PictureBox1_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles PictureBox1.DragEnter
            e.Effect = DragDropEffects.Move
        End Sub

     

        Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            PictureBox1.AllowDrop = True
        End Sub

     

     

    2008年4月20日 6:52
    版主
  • 语句:

    PictureBox1.Image = Image.FromFile(CType(e.Data.GetData(DataFormats.FileDrop), Array).GetValue(0).ToString)
    获得的只是一个临时文件的内容,这种方式获得的图像质量要比在IE中直接"复制"得到的图像质量要差很多(不知道是怎么回事),最好的办法还是直接将DIB格式图像转换成IMAGE格式,e.Data.GetData(DataFormats.Dib)只是一个内存流,请问怎样才能将它转换为system.drawing.image?

    我试过:

    dim img as image=image.fromstream(e.data.getdata(dataformats.dib))不能获得正确的图像?程序好象根本没有执行这个语句(我在此语句后加了一个msgbox(""),结果没有相应的msgbox出现,很奇怪).特请教,谢谢.

    2008年4月21日 3:47
  •  

    你从哪拖过来的

     

    确实msgbox没用

    2008年4月21日 4:33
    版主
  • 我从IE上的一个叫做"中国*****"上的网站上拖过来的,其他的网页也是一样吧.

     

    2008年4月21日 5:26
  • If e.Data.GetDataPresent(DataFormats.Dib, True) Then
                'MsgBox(CType(e.Data.GetData(DataFormats.FileDrop), Array).GetValue(0).ToString)
                'img = Image.FromFile(CType(e.Data.GetData(DataFormats.FileDrop), Array).GetValue(0).ToString)
                Dim ms As System.IO.MemoryStream = e.Data.GetData(DataFormats.Dib, True)
                Dim b() As Byte = ms.ToArray
                'img = Image.FromStream(ms)
                MsgBox(b.Length & " " & b(0) & " " & b(1) & " " & b(2) & " " & b(3) & " " & b(4) & " " _
                  & b(5) & " " & b(6) & " " & b(7) & " " & b(8))

    End If

    非常奇怪,上文中红色的代码被注释后,msgbox可以出现并报告数据;

    取消注释后,msgbox不能出现.

     

    2008年4月21日 5:43