【问题标题】:Drag and Drop a folder拖放文件夹
【发布时间】:2016-04-27 08:33:48
【问题描述】:

我有一个应用程序,它的简单之处在于将文件从我的计算机拖放到应用程序中,然后它会显示名称、类型、大小、创建时间、修改时间和上次访问时间。但我意识到它只删除文件,我希望它也删除文件夹。

这是应用程序的布局 enter image description here

在我删除文件后(可以是快捷方式、.exe、excel 文件、.rar、...) enter image description here

如果我尝试删除文件夹,我可以这样做,但不显示任何内容,我不明白为什么。

这里分别是 DragEnter 和 DragDrop 代码

拖动回车

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

拖放

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

它只会在调试时显示名称。所以我推测它可能与扩展和图标有关

【问题讨论】:

    标签: vb.net


    【解决方案1】:

    您可以检查一个目录是否存在与删除实体的名称:

    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。我强烈建议你这样做。]

    【讨论】:

    • 但我会在 DragDrop 或 DragEnter 上使用该条件吗?
    • 您将在 DragDrop 处理程序中使用它。此外,当目录被删除时,您将不得不编写不同的代码,例如您可能希望显示目录中文件的数量及其大小的总和。
    • 我已经解决了我的问题。我正在考虑这一点,删除文件夹的可能性不是问题,因为我不需要。感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 2020-02-10
    • 1970-01-01
    • 1970-01-01
    • 2012-11-10
    • 1970-01-01
    • 2022-12-20
    • 2011-09-06
    • 1970-01-01
    相关资源
    最近更新 更多