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 个属性的文件夹对象:FolderPath
、FolderName
和 FolderChecked
。我可以将 FolderPath
和 FolderName
添加到列表视图,但我无法设置检查 属性 值是 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
如何使用 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 个属性的文件夹对象:FolderPath
、FolderName
和 FolderChecked
。我可以将 FolderPath
和 FolderName
添加到列表视图,但我无法设置检查 属性 值是 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