拖放文件夹

时间:2016-04-27 08:33:49

标签: vb.net

我有一个应用程序,它简单地将文件从我的计算机拖放到应用程序,然后显示名称,类型,大小,创建,修改和上次访问的时间。但我意识到它只丢弃文件,我也想让它丢弃文件夹。

这是应用的布局 enter image description here

删除文件后(可能是快捷方式,.exe,excel文件,.rar,...) enter image description here

如果我尝试删除文件夹,我可以执行此操作,但不显示任何内容,我无法理解原因。

这里分别是DragEnter和DragDrop代码

DragEnter

If e.Data.GetDataPresent(DataFormats.FileDrop) Then
        e.Effect = DragDropEffects.Copy
    End If

的DragDrop

Dim file As String = e.Data.GetData(DataFormats.FileDrop)(0)

    MyFile = New FileInfo(file)

    If String.IsNullOrWhiteSpace(MyFile.Extension) Then
        Exit Sub
    End If

    ShowInfoFiles()

    UpdateControls()

经过一些测试后,我发现这可能是主要问题。下面的代码是在私有子ShowInfoFiles()内的标签上删除文件后将更新的代码。

    lblName.Text = MeuFicheiro.Name
    lblType.Text = MeuFicheiro.Extension
    lblSize.Text = Math.Round(MeuFicheiro.Length / 1024) & "KB"
    pbIcon.Image = Icon.ExtractAssociatedIcon(MeuFicheiro.FullName).ToBitmap

如果我评论改变这行代码

如果你能帮助我解决或尝试解决这个问题,我将不胜感激。

MyFile.Extension

MyFile.Name

它只会在调试时显示我的名字。所以我认为它可能与Extension和Icon

有关

1 个答案:

答案 0 :(得分:2)

您可以检查是否存在包含已删除实体名称的目录:

Dim item As String = CType(e.Data.GetData(DataFormats.FileDrop), Array).GetValue(0).ToString
If Directory.Exists(item) Then
    ' process item as a directory
Else
    ' process item as a file
End If

[看起来您可能没有使用Option Strict On。我强烈建议你这样做。]