0

我试图在用户删除文件夹或文件时有所不同,但出现错误。

更新

错误是:

Conversion from string "C:\Users\Administrador\Desktop\W" to type 'Long' is not valid.

(注意路径不完整)

IDE 突出显示此错误行:

If ((attributes And FileAttributes.Directory) = FileAttributes.Directory) Then

我不知道问题是在转换中还是什么,但是如果我在有问题的错误行之前使用 msgbox,我可以看到路径是正确的:

MessageBox.Show(Objetos(0))
If ((attributes And FileAttributes.Directory) = FileAttributes.Directory) Then

在此处输入图像描述

这是子:

Private Sub TextBox1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles foldertextbox.DragDrop
    If e.Data.GetDataPresent(DataFormats.FileDrop) Then
        Dim Objetos As String() = e.Data.GetData(DataFormats.FileDrop)

        Dim attributes = Objetos(0)
        If ((attributes And FileAttributes.Directory) = FileAttributes.Directory) Then
            MsgBox("it's a dir")
        Else
            MsgBox("it's a file")
        End If

        foldertextbox.Text = Objetos(0)
        userSelectedFolderPath = Objetos(0)
        My.Settings.folderpath = Objetos(0)
        My.Settings.Save()
        playerargs = Nothing
        updatecheckboxes()
    End If
End Sub
4

1 回答 1

3

您的attributes变量实际上包含文件/目录名称/路径,如果您想测试它是否是一个目录,您可以尝试:

System.IO.Directory.Exists(attributes)

像这样:

If System.IO.Directory.Exists(attributes) Then
    MsgBox("it's a dir")
ElseIf System.IO.File.Exists(attributes) Then
    MsgBox("it's a file")
End If

更新

检查这个答案,有更好的检查,也许是你正在寻找的: .NET 如何检查路径是否是文件而不是目录?

Dim isDir As Boolean = (System.IO.File.GetAttributes(path) And 
        System.IO.FileAttributes.Directory) = FileAttributes.Directory
于 2012-11-22T17:46:21.873 回答