【发布时间】:2013-07-31 15:28:59
【问题描述】:
我在通过 ListView 扫描以查找与给定字符串匹配的子项时遇到问题。这是我的代码:
private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
{
string date = datePicker.Value.ToShortDateString();
int count = Program.booker.listView.Items.Count;
for (int i = 0; i < count; i++)
{
ListViewItem lvi = Program.booker.listView.Items[i];
if (lvi.SubItems.Equals(date))
{
MessageBox.Show("Found!", "Alert");
Program.booker.listView.MultiSelect = true;
Program.booker.listView.Items[i].Selected = true;
}
else
{
MessageBox.Show("Nothing found for " + date, "Alert");
}
}
}
ListView 位于 Booker 表单上,我从 Filter 类访问它。我想在整个 ListView 中搜索与我的日期字符串匹配的任何项目。谢谢!
【问题讨论】:
-
这是 WPF 还是 Winforms?还有你当前的代码有什么问题,它不起作用,抛出错误吗?
-
Winforms。而且我的代码不起作用。它只搜索我的 ListView 中的第一列,而不搜索子项。
-
您不应该为每个项目循环遍历
SubItems并检查所有项目吗?我在想lvi.SubItems.Equals(date)正在尝试将指向集合的指针与日期匹配,这总是错误的。也许将Equals更改为Contains? -
我正在搜索一个字符串,
Contains接受一个SubItem作为参数。 -
您是否尝试将您的条件更改为
lvi.SubItems.Any(item => item.Equals(date))?毕竟,您问的是 any 子项是否等于日期,而不是子项(作为集合)是否等于日期。