html5中文学习网

您的位置: 首页 > 网络编程 > ASP.NET » 正文

HOW TO:从资源管理器中拖放文件到控件_.NET教程_编程技术

[ ] 已经帮助:人解决问题
控件

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

CBjHTML5中文学习网 - HTML5先行者学习网
CBjHTML5中文学习网 - HTML5先行者学习网
(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助