我有一个应用程序,它简单地将文件从我的计算机拖放到应用程序,然后显示名称,类型,大小,创建,修改和上次访问的时间。但我意识到它只丢弃文件,我也想让它丢弃文件夹。
这是应用的布局 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
有关答案 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。我强烈建议你这样做。]