HOW TO:从资源管理器中拖放文件到控件

翻译|其它|编辑:郝浩|2005-04-22 09:30:00.000|阅读 1313 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>


HOW TO:从资源管理器中拖放文件到控件

当然,这里所谓的文件是指完整的文件名称,至于文件的内容,须按实际情况进一步的操作。

我这里的控件为一个ListBox。代码如下:

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

   Me.ListBox1.AllowDrop = True

End Sub

Private Sub ListBox1_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ListBox1.DragEnter

   Dim o As Object = e.Data.GetData(DataFormats.FileDrop)

   If Not o Is Nothing Then

      e.Effect = DragDropEffects.Copy

   End If

End Sub

Private Sub ListBox1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ListBox1.DragDrop

   Dim FileNames As String() = CType(e.Data.GetData(DataFormats.FileDrop), String())

   Me.ListBox1.Items.AddRange(FileNames)

End Sub


重写这个HOW TO,主要的是看到有人用API实现,代码如下:

Private Const WM_DROPFILES As Integer = 563

Private Declare Function DragAcceptFiles Lib "shell32.dll" (ByVal hwnd As IntPtr, ByVal accept As Boolean) As Long

Private Declare Function DragQueryFile Lib "shell32.dll" (ByVal hDrop As IntPtr, ByVal file As Integer, ByVal fileName As System.Text.StringBuilder, ByVal size As Int32) As Int32

Private Declare Sub DragFinish Lib "Shell32.dll" (ByVal hDrop As IntPtr)

Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)

  If m.Msg = WM_DROPFILES Then

    Dim iNumOfFiles As Int32 = DragQueryFile(m.WParam, &HFFFFFFFF, Nothing, 0)

    Dim iPnt As Int32

    For iPnt = 0 To iNumOfFiles - 1

      Dim sb As New System.Text.StringBuilder(256)

      Dim iRet As Int32 = DragQueryFile(m.WParam, iPnt, sb, sb.Capacity)

      ListBox1.Items.Add(sb.ToString)

   Next

   DragFinish(m.WParam)

Else

   MyBase.WndProc(m)

End If

End Sub


Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load

   DragAcceptFiles(ListBox1.Handle, True)

End Sub


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP