首页 >> VC.Net >> 正文
怎样从资源管理器中拖放文件到控件 -VC.NET
来源:Dotnet频道 作者:采集 时间:2008-3-31


  当然,这里所谓的文件是指完整的文件名称,至于文件的内容,须按实际情况进一步的操作。
  
  我这里的控件为一个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
相关新闻
相关评论
 
评论表单加载中...
 
VC.Net文章

 在Visual C++应

 编辑:admin

 时间:2008-3-10


   .NET Framework 中多语言支持的实现-.NET Framework
   将Eiffel系统集成到.NET Framework中-.NET Framework
   04年五种常用RAD的测验比较(1)-.NET Framework
   04年五种常用RAD的测验比较(2)-.NET Framework
   04年五种常用RAD的测验比较(3)-.NET Framework
最新文章
   .NET Framework 中多语言支持的实现-.NET Framework
   将Eiffel系统集成到.NET Framework中-.NET Framework
   04年五种常用RAD的测验比较(1)-.NET Framework
   04年五种常用RAD的测验比较(2)-.NET Framework
   04年五种常用RAD的测验比较(3)-.NET Framework
总站搜索
搜索
 
热门文章
   oracle数据库文件中的导入\导出
   用Oracle10g列值掩码技术隐藏敏感数据
   VB程序中用ADO对象动态创建数据库和表-VB.NET
   用VB6写简单程序 让电骡自动关机-VB.NET
   使用.NET2.0编写COM组件供VB调用-VB.NET
   VB.NET:键盘控制焦点移动-VB.NET
   用VB.NET绘制GDI图形-VB.NET
   vb.net中应用 ArrayList 实例-VB.NET
 
推荐文章
ASP.NET中的状态管理-ASP.NET
VC、IE、ASP环境下打印、预备的完美解决方案
oracle数据库文件中的导入\导出
VB.NET中快速访问注册表技巧-VB.NET
在vb中实现超连接的方法!和直接发邮件-VB.NET
用VB做realplayer播放列表-VB.NET
在VB.NET中如何实现和利用SortedLists-VB.NET
利用VB.NET Stopwatch对象记录时间-VB.NET
成都古羌科技有限公司版权所有: Copyright@2007-2010 ,ALL Rights Reserved 蜀ICP备07017240号