VB.net 在列表视图中添加新的列表视图项并选中为真?

VB.net Add new listview item in listview with Checked True?

如何使用 AddRange 函数设置 Listviewitem 已检查 True/False?

Try
    _lsv.SuspendLayout()
    _lsv.Items.AddRange((From itm In _desrz.Select(           
                             Function(x) New ListViewItem(New String() {
                                 x.FolderName,
                                 x.FolderPath}
                             ))).ToArray)
Catch ex As Exception
    Throw ex
Finally
    _lsv.ResumeLayout() : _lsv.Update() : _lsv.Refresh()
End Try

_desrz 是一个具有 3 个属性的文件夹对象:FolderPathFolderNameFolderChecked。我可以将 FolderPathFolderName 添加到列表视图,但我无法设置检查 属性 值是 true/false?

您可以使用对象初始化器在新构造的对象上设置 属性:

New SomeType With {.SomeProperty = someValue, .SomeOtherProperty = someOtherValue}

或者,使用构造函数参数:

New SomeType(someArgument, someOtherArgument) With {.SomeProperty = someValue, .SomeOtherProperty = someOtherValue}

在你的例子中,你的类型是 ListViewItem,你的构造函数是 String 数组,你的 属性 是 Checked:

New ListViewItem({x.FolderName, x.FolderPath}) With {.Checked = True}

@jmchinney 回答,这是下面的工作代码,

          Public Shared Async Function LoadFoldersList(_lsv As ListView, _JsonFoldersListPath As String) As Task(Of Boolean)
        Return Await Task.Run(Async Function()
                                  Dim _rslt As Boolean = False
                                  Dim _itmS As ListViewItemCollection = Nothing
                                  Dim _desrz As List(Of TFolder) = Nothing
                                  Dim _lamLsv As Action = Nothing
                                  Try
                                      If My.Computer.FileSystem.FileExists(_JsonFoldersListPath) Then
                                          Dim _cntnts = My.Computer.FileSystem.ReadAllText(_JsonFoldersListPath)
                                          If Not IsNothing(_cntnts) AndAlso Not String.IsNullOrEmpty(_cntnts) Then
                                              _desrz = Newtonsoft.Json.JsonConvert.DeserializeObject(Of List(Of TFolder))(Await _cntnts.ToDeCryptWOP)
                                              If Not IsNothing(_desrz) Then
                                                  _lamLsv = Sub()
                                                                Try
                                                                    _lsv.SuspendLayout()
                                                                    _lsv.Items.AddRange((From itm In _desrz.Select(
                                                                                                 Function(x) New ListViewItem(New String() {
                                                                                                 x.FolderName,
                                                                                                 x.FolderPath}
                                                                                                 ) With {.Checked = x.Checked})).ToArray)
                                                                Finally
                                                                    _lsv.ResumeLayout() : _lsv.Update() : _lsv.Refresh()
                                                                End Try
                                                            End Sub
                                                  If _lsv.InvokeRequired Then
                                                      _lsv.Invoke(Sub() _lamLsv())
                                                  Else
                                                      _lamLsv()
                                                  End If
                                              End If
                                          End If
                                      End If
                                      _rslt = True
                                  Catch ex As Exception
                                      L.Log.WritelogAsync(ex)
                                  Finally
                                      _lamLsv = Nothing : _desrz = Nothing : _itmS = Nothing 'is that correct for prevent memroy leaking
                                  End Try
                                  Return _rslt
                              End Function)
    End Function