1

我将所有选中的项目存储在一个字符串中,这对我来说非常有效,但我想将所有选中的项目及其名称存储在一个数组中。

 Dim i As Integer

 Dim ListItems As String

        ListItems = "Checked Items:" & ControlChars.CrLf

        For i = 0 To (ChkListForPrint.Items.Count - 1)
            If ChkListForPrint.GetItemChecked(i) = True Then
                ListItems = ListItems & "Item " & (i + 1).ToString & " = " & ChkListForPrint.Items(i)("Name").ToString & ControlChars.CrLf
            End If
        Next

请帮忙!

4

2 回答 2

1

如果你需要CheckedItems那么你为什么要使用Items呢?我建议使用CheckedItems.

我已经对您的代码进行了一些修改,这样的内容会对您有所帮助:

Dim collection As New List(Of String)()        ' collection to store check items
Dim ListItems As String = "Checked Items: "    ' A prefix for any item

For i As Integer = 0 To (ChkListForPrint.CheckedItems.Count - 1)  ' iterate on checked items
    collection.Add(ListItems & "Item " & (ChkListForPrint.Items.IndexOf(ChkListForPrint.CheckedItems(i)) + 1).ToString & " = " & ChkListForPrint.GetItemText(ChkListForPrint.CheckedItems(i)).ToString)  ' Add to collection
Next

这里:

  1. ChkListForPrint.Items.IndexOf(ChkListForPrint.CheckedItems(i)) 将获得检查项目的索引。

  2. ChkListForPrint.GetItemText(ChkListForPrint.CheckedItems(i))将显示项目的文本。

所以会生成如下输出:(假设列表中有 4 个项目,其中 2 和 3 项目被选中)

Checked Items: Item 2 = Apple
Checked Items: Item 3 = Banana
于 2012-11-15T10:53:28.370 回答
1

这应该这样做。

Dim ListItems as New List(Of String)
For i = 0 To (ChkListForPrint.Items.Count - 1)
    If ChkListForPrint.GetItemChecked(i) = True Then
       ListItems.Add(ChkListForPrint.Items(i)("Name").ToString)
    End If
Next
于 2012-11-15T08:19:22.293 回答