【问题标题】:How to display icon in ListView in VB.Net如何在 VB.Net 的 ListView 中显示图标
【发布时间】:2020-08-25 15:40:06
【问题描述】:

你能帮我从目录中获得的文件中显示图标视图吗

这是我的代码。

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        SearchDir("g:\")
    End Sub

    Public Sub SearchDir(ByVal sDir As String)
        Dim fil As String

        Try
            For Each dir As String In Directory.GetDirectories(sDir)
                For Each fil In Directory.GetFiles(dir, " *.doc ")
                    ListView1.Items.Add(fil)
                Next
                SearchDir(dir)
            Next

        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
End Class

这给了我一个结果,但是以字符串的形式显示它的路径

【问题讨论】:

  • 您在问题中使用了ImageList 标签,但您的代码中没有ImageList 的迹象,您也没有在问题中提及它。看起来您对自己需要做的事情很清楚,但您没有费心对其进行任何研究,而是希望我们为您做这件事。这不是这个网站的工作方式。 ListView 类的文档甚至包括一个使用ImageLists 的代码示例。你需要先为自己努力。
  • 在不相关的注释上,您不应该像这样一个一个地向ListView 添加项目。正如文档所述,首选选项是首先创建所有项目,然后通过一次调用 AddRange 将它们全部添加,但是,如果您要逐个进行,则需要调用 BeginUpdate 和 @987654330 @分别在你开始之前和结束之后。
  • 谢谢@jmcilhinney。我搜索 Imagelist,但我不知道如何传递给它。这就是为什么我希望有人可以告诉我它是如何完成的。对不起,我是 vb.net 的新手
  • 那你真的没看过,因为我知道网上有例子。没有证据表明您的代码中有任何努力,并且您在我发布几分钟后发布,所以从那时起您就没有尝试过。如果你只是花一两分钟“尝试”然后放弃,那么你并没有真正尝试。
  • @AndrewMortimer、this documentation 提到了AddRangeBeginUpdateEndUpdate。它没有指定首选或推荐使用AddRange。我很肯定我过去读过它,所以他们可能已经改变了它。无论如何,关键是在没有BeginUpdateEndUpdate 的情况下重复调用Add 将在添加每个项目后重新绘制控件。这会以指数方式减慢速度,因此随着项目数量的增加尤其糟糕。

标签: vb.net listview imagelist


【解决方案1】:

首先,您需要从 Visual Studio 工具箱中添加 ImageList 工具。然后选择其属性并选择您需要使用的图像。

之后,您需要在ListView 代码中使用ImageList 对应的给定串行ID,如下所示:

声明:

Private lView As ListViewItem ' listView's lView (not I-view)

lView = ListView1.Items.Add("Special iconic thing", 0) ' 0 = my icon ID in ImageList

你应该得到类似于我的输出:

希望它对你有用。

【讨论】:

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