【问题标题】:VB.NET - Adding items to a listview as well as checkboxes and tag propertyVB.NET - 将项目添加到列表视图以及复选框和标记属性
【发布时间】:2011-09-14 14:46:31
【问题描述】:

我有这段代码,它基本上循环遍历一组文件夹和子文件夹并找到特定的文件类型。然后在列表视图中列出这些。现在,它旨在列出 exe 和 msi 文件。而且我已经做到了,以便在列出这些图标后可以双击它们。我通过在它的标签属性中添加文件的路径来做到这一点。

但是,我的上级希望每个项目旁边都有一个复选框。这样他们就可以检查他们想要安装的每个项目。然后有一个按钮,它一次运行每个标签属性中的路径。这基本上是我用复选框、exe 或 msi 文件的文件名、标签和我想知道的图标填充列表视图的部分。

这是现有代码。这仅包括列表视图的平铺视图。

   Public Sub getDirectories(ByVal strFilepath As String, ByVal strFileExtension As String, ByVal objControl As Object)

        'Load first files from the root folder. Then loop each subfolder
        Dim di As New DirectoryInfo(strFilepath)
        Dim aryFi As IO.FileInfo() = di.GetFiles(strFileExtension, SearchOption.AllDirectories)

        Dim filePath As String
        Dim fileIcon As Icon

        ' For each file in the root folder
        For Each file In aryFi
            If file.Extension = String.Empty Then
            Else
                filePath = GetAssociatedProgram(file.Extension)
                On Error Resume Next

                'Extract icon
                fileIcon = Drawing.Icon.ExtractAssociatedIcon(filePath)
                'Add the icon if we haven't got it already
                objControl.StateImageList = Form1.iconList

                If Form1.iconList.Images.ContainsKey(filePath) Then
                Else
                    Form1.iconList.Images.Add(filePath, fileIcon)
                End If
                'Add item to list
                objControl.items.add(file.Name, filePath).Tag = file.DirectoryName
            End If
        Next

    End Sub

基本上我是这样称呼这个子的:

getDirectories(strProgramLocation, "*.exe", Form1.listViewSupSoftware)

我发现我可以将项目添加到还包含列的列表视图中:

        Dim tempstr(2) As String
        tempstr(0) = "Name of item"
        tempstr(1) = "Target folder of item"

        Dim tempNode As ListViewItem
        tempNode = New ListViewItem(tempstr)
        Form1.listViewItem.Items.Add(tempNode)

但是应该有一种方法可以将这两者结合起来吧?我不确定如何在列表视图的第一列中添加复选框?我已经将列表视图的 Checkbox 属性设置为 True。但如果有人有的话,我可以在这里使用一些指针。 :)

【问题讨论】:

    标签: vb.net listview checkbox


    【解决方案1】:

    嗯,我不太明白你的问题。如果您已经拥有列表框,您只需要使用 CheckedListBox 并遍历所有已检查的项目,执行存储到标记属性中的可执行文件...

    正如我所说,我不确定我是否明白你的意思......

    【讨论】:

    • 好吧,基本上我想要一个包含三列的列表视图。第一个应该包含一个复选框,第二个应该包含文件的图标和名称,第三个应该包含实际文件的文件路径。对于它在循环中找到的每个文件,我想添加复选框、项目和图标以及文件的路径。在每个对应的列中。
    • 好吧,要做到这一点,您需要使用网格而不是列表框,因为您需要一个不接受列的 CheckedListBox。
    • 其实我只是尝试将listview的CheckBox属性设置为true。这使得每一行都有自己的复选框。现在,我不得不删除每一行的图标,因为图标似乎取代了复选框。不知道如何将图标设置在与复选框相同的空间上。我不是通过代码来做的,所以它一定是内置的。但是,删除图标实际上给了我每行的复选框,以及同一个列表视图中的列。
    • 嗯,当然,这是另一种选择,但您将无法显示图标。
    • ListView 和 ListBox 是两种不同的动物。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-19
    • 2021-11-17
    相关资源
    最近更新 更多