科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道怎样从资源管理器中拖放文件到控件

怎样从资源管理器中拖放文件到控件

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

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

作者:中国IT实验室 来源:中国IT实验室 2007年9月29日

关键字: 编程

  • 评论
  • 分享微博
  • 分享邮件
  
  当然,这里所谓的文件是指完整的文件名称,至于文件的内容,须按实际情况进一步的操作。
  
  我这里的控件为一个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

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章