【问题标题】:unlocking and deleting files from listview从列表视图中解锁和删除文件
【发布时间】:2015-11-26 00:20:19
【问题描述】:

我有一个难题要问你们......

我一直在用这段代码填充一个列表视图项:

    Dim loc5 As String
    loc5 = "C:\Users\JoseLuis\Dropbox\files\0. Image\4. Galería\Collection"

    Dim il As New ImageList
    il.ColorDepth = ColorDepth.Depth32Bit
    ListView1.LargeImageList = il
    ListView1.SmallImageList = il
    ListView1.LargeImageList.ImageSize = New System.Drawing.Size(28, 28)


    For Each file In System.IO.Directory.GetFiles(loc5)
        Dim list As New ListViewItem(IO.Path.GetFileName(file.ToString))
        Dim listnoex As New ListViewItem(IO.Path.GetFileNameWithoutExtension(file.ToString))
        list.Text = IO.Path.GetFileName(file.ToString)
        listnoex.Text = IO.Path.GetFileNameWithoutExtension(file.ToString)
        If list.Text.Contains(".PNG") Or list.Text.Contains(".png") Then
            il.Images.Add(file, Drawing.Image.FromFile(file))
            ListView1.Items.Add(listnoex.Text, il.Images.Count - 1)
        End If
    Next

它从文件中的一堆 png 中获取缩略图...

一切都很好,直到我到达删除按钮...

    Dim loc5 As String
    Dim named As String

    loc5 = "C:\Users\JoseLuis\Dropbox\files\0. Image\4. Galería\Collection\"

    Dim item As ListViewItem
    item = ListView1.SelectedItems.Item(0)
    named = loc5 & (item.Text) & ".png"
    item.Remove()
    My.Computer.FileSystem.DeleteFile(Name, FileIO.UIOption.OnlyErrorDialogs, FileIO.RecycleOption.SendToRecycleBin, FileIO.UICancelOption.ThrowException)

每次我尝试删除所选文件时,填充列表的按钮似乎仍在使用它...

关于如何从列表视图中处理所选项目和图像的任何线索?

提前致谢

【问题讨论】:

  • 你在DeleteFile()方法中的第一个参数叫做Name,你是不是想用named
  • 另外,不要检查您的文本是否同时包含.PNG.png,而是使用.ToLower() 方法:list.Text.ToLower().Contains(".png")
  • 另外,您遇到异常了吗?如果有请留言。
  • 您的缩略图图像必须是新图像。 il.Images.Add(file, NEW Drawing.Image.FromFile(file)) (或类似的东西,因此它与文件分开)。

标签: vb.net listview dispose imagelist


【解决方案1】:

试试这个。

il.images.add(Image.FromStream(New MemoryStream(File.ReadAllBytes(file))))

这会创建一个与您的文件分开的新图像。

【讨论】:

    【解决方案2】:

    感谢大家的回复。视觉文森特是对的,我的意思是叫大声笑。

    解决了! ,一条漂亮的小线解决了我的问题: 从列表视图中删除项目后的 GC.Collect()。

    再次感谢您的专业知识。 ?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多