Ric*_*ale 3 vb.net listbox multi-select winforms
我在表单上有一个列表框,它可以正常工作.
我想编辑表单上的项目,这意味着填充列表框,然后选择相关的项目.
我的列表框包含项目大小列表,我想选择属于正在编辑的项目的大小.
可以有人给我一些指示.
我试过me.lstItemSizes.SetSelected(i,true)但这只适用于单个项目.
任何帮助将不胜感激.
我的代码:
Private Sub SelectItemSizes(ByVal itemID As Integer)
Dim itemSizes As IList(Of ItemSize) = _sizeLogic.GetItemSizes(itemID)
Me.lstItemSizes.SelectionMode = SelectionMode.MultiExtended
If (itemSizes.Count > 0) Then
For i As Integer = 0 To Me.lstItemSizes.Items.Count - 1
For x As Integer = 0 To itemSizes.Count - 1
If (CType(Me.lstItemSizes.Items(i), PosSize).SizeID = itemSizes(x).SizeID) Then
Me.lstItemSizes.SetSelected(i, True)
Else
Me.lstItemSizes.SetSelected(i, False)
End If
Next
Next
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
你是否将selectionmode设置为multi?
您需要指定它以允许多个选择.
然后你可以这样做:
Dim i as Integer=0
For i=0 To Me.listBox.SelectedItems.Count -1
'display the listbox value
next i
Run Code Online (Sandbox Code Playgroud)
这是一个屏幕截图:

在列表框上设置属性后,根据要选择的值调用setselected.
me.lstItemSizes.SetSelected(3,true)
me.lstItemSizes.SetSelected(4,true)
me.lstItemSizes.SetSelected(9,true)
Run Code Online (Sandbox Code Playgroud)
在这里你可以添加20个数字,只选择偶数.
Dim i As Integer
'load the list with 20 numbers
For i = 0 To 20
Me.ListBox1.Items.Add(i)
Next
'now use setselected
'assume only even are selected
For i = 0 To 20
If i Mod 2 = 0 Then
Me.ListBox1.SetSelected(i, True)
End If
Next
Run Code Online (Sandbox Code Playgroud)
看看你循环的方式,让我们假设我创建了一个整数列表,我的vb.net生锈了我主要用C#开发.但假设你这样做:
Dim l As New List(Of Integer)
l.Add(2)
l.Add(6)
l.Add(20)
Run Code Online (Sandbox Code Playgroud)
您的列表中只有三个项目,因此首先根据列表中的项目进行循环,然后在列表框中的项目中进行循环,反之亦然.看这个:
Dim i As Integer
Dim l As New List(Of Integer)
l.Add(2)
l.Add(6)
l.Add(20)
'load the list with 20 numbers
For i = 0 To 20
Me.ListBox1.Items.Add(i)
Next
Dim lCount As Integer = 0
For lCount = 0 To l.Count - 1
For i = 0 To 20
If i = l.Item(lCount) Then
Me.ListBox1.SetSelected(i, True)
Exit For
End If
Next
Next
Run Code Online (Sandbox Code Playgroud)
在代码中,我的列表只包含3个项目:2,6和20.我将这些项目添加到l,它只是一个列表对象.所以现在我必须循环使用这3个数字并与我的列表框进行比较.你有相反的情况,你循环在列表框上,然后考虑列表对象.
请注意,在我的for循环中,一旦找到列表中的项目,我就不再需要循环了exit for.这确保我不会过期所需的循环量.找到项目后退出并返回列表对象计数.
运行我的代码之后是结果
