把OLEDrapMode设为人工.
OLEDrapOver,OLEDrapDrop,两个事件判断数据类型.具体你查查MSDN吧。

解决方案 »

  1.   

    lvwAnnex为一个ListView用来接受拖进来的文件,将lvwAnnex的OLEDragMode设为0-ccOLEDragManual ,OLEDropMode属性设为1-ccOLEDropManualPrivate Sub lvwAnnex_OLEDragDrop(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single)
        
        If Data.GetFormat(vbCFFiles) = True Then
           
            Effect = OLEDragDropFiles(Data)
        
        End IfEnd SubPrivate Sub lvwAnnex_OLEDragOver(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single, State As Integer)
        
        If Data.GetFormat(vbCFFiles) = True Then
           
            Effect = vbDropEffectCopy
        
        End IfEnd SubPrivate Function OLEDragDropFiles(Data As RichTextLib.DataObject) As Long
    Dim FileName As Variant
    Dim OpenFileName As String
    Dim Filenum As Long
    Dim ContentType As Integer
    Dim FileEtc As String
    Dim FileCount As Integer    If Data.GetFormat(vbCFFiles) = True Then        For Each FileName In Data.Files
            
                FileCount = FileCount + 1
            
            Next
            If FileCount = 1 Then
            
                For Each FileName In Data.Files
                
                    OpenFileName = CStr(FileName)
                    FileEtc = GetFileEtc(CStr(FileName))
                
                Next
                
                Select Case UCase(FileEtc)
                
                    Case ".TXT"
                    
                        ContentType = 1
                    
                    Case ".RTF"
                    
                        ContentType = 0
                
                    Case Else
                    
                        ContentType = 2
                        
                End Select
                        
                If ContentType <> 2 Then
                     
                    Filenum = FreeFile
                    Open OpenFileName For Input Access Read As Filenum
                    If LOF(Filenum) <= 1000 And rchtxtContent.Text = "" Then
                    
                        rchtxtContent.LoadFile OpenFileName, ContentType
                        Close Filenum
                        OLEDragDropFiles = vbDropEffectCopy
                        Exit Function
                    
                    End If
                
                End If
            
            End If
            For Each FileName In Data.Files
            
              '  If Dir(FileName, vbDirectory) <> "" Then
                
              '  Else
                
                    AddAnnexTolvwAnnex (FileName)
                    
              '  End If
                
            Next
            OLEDragDropFiles = vbDropEffectCopy
            frmNewMail.cmdAddAnnex.Value = True
            
        End If
        
    End Function