我有很多项目的列表视图,我的列表视图中有一个名为Age的列。我想使用2个文本框来搜索具有特定年龄的项目。例如,我输入textbox1
值20和textbox2
- 30.它应该在列表视图中显示年龄为20,21,22,...... 30的项目。 / p>
答案 0 :(得分:0)
循环浏览您的集合,获取项目值并进行评估。如果匹配条件 - 将其添加到listview
Dim min as integer = Integer.Parse(txtMin.Text)
Dim max as integer = Integer.Parse(txtMax.Text)
For Each person as PersonInfo in myPersonList
If person.Age >= min AndAlso person.Age <= max Then
myListview.Items.Add(. . . . . . )
End If
Next
如果你已经列出了listview中的项目,你就可以做到这一点
For Each item as ListViewItem in myListview.Items
' here it is depends on where is your column located
Dim age As Integer = Integer.Parse(item.[SubItems(..)].Text)
If age >= min AndAlso age <= max Then
item.BackColor = Color.Yellow ' - highlight items that meet criteria
End If
Next
请记住Item
有文字,可以Subitems
。取决于您的专栏在哪里 - 我们在您的帖子中不知道这一点 - 您需要使用item.SubItems(i).Text
现在,我还没有尝试过,但必须有效。列表视图的动态加载
Dim itemList As List(Of ListViewItem) ' -- your item database so to speak
' Add your items to it and not to list view
' Then, when button_click happens, use LINQ
myListview.Items.Clear()
itemList.Where(
Function(item)
Dim age As Integer = Convert.ToInt32(item.[SubItems(..)].Text)
Return (age >= min AndAlso age <= max)
End Function).ToList().ForEach(Sub(item) myListview.Items.Add(Item))
这将仅使用符合条件的项目填充列表
答案 1 :(得分:0)
如果您有两个列表视图,一个显示年龄,另一个显示您在min&amp ;;最大,你可以使用下面的代码。
Dim min As Integer = CInt(txtMin.Text)
Dim max As Integer = CInt(txtMax.Text)
For Each itm In CoursesList.Items
If CInt(itm) > min And CInt(itm) < max Then
CoursesList.Items.Add(itm)
End If
Next