好的...所以我有一个搜索ListView的工作程序。这个程序 但是,它只能搜索5列中的1列。我的愿望是 得到程序来搜索前两个名字和姓氏的列。我找到了一行代码,假设这样做,但在编译之后会产生错误。下面是我的代码的摘录。和我试图使用的线。
提前感谢所有帮助和建议
private void button3_Click(object sender, EventArgs e)
{
string s = " Search Via Forename";
int result = 0;
int count = 0;
result = string.Compare(textBox1.Text, s);
if ((result == 0) || (String.IsNullOrEmpty(textBox1.Text)))
{
MessageBox.Show("Please input forename...");
return;
}
foreach(ListViewItem.ListViewSubItem subItem in item.SubItems)
{
if (item.Text.ToLower().StartsWith(textBox1.Text.ToLower()))
{
count++;
statusBar1.Panels[2].Text = "Found: " + count.ToString();
}
else
{
listView1.Items.Remove(item);
}
}
button1.Text = "Clear";
textBox1.Visible = false;
button3.Visible = false;
button2.Visible = false;
}
答案 0 :(得分:0)
这是因为您引用了一个名为item
的未声明的变量,该变量从未被声明或实例化。
循环列表项时,您需要使用:
foreach(ListViewItem item in listView1.Items)
这将使用名为ListView
的变量迭代Items
item
,该变量将在每次迭代时保留当前项目。
试试这段代码:
private void button3_Click(object sender, EventArgs e)
{
string s = " Search Via Forename";
int result = 0;
int count = 0;
result = string.Compare(textBox1.Text, s);
if ((result == 0) || (String.IsNullOrEmpty(textBox1.Text)))
{
MessageBox.Show("Please input forename...");
return;
}
foreach(ListViewItem item in listView1.Items)
{
if (item.Text.ToLower().StartsWith(textBox1.Text.ToLower()))
{
count++;
statusBar1.Panels[2].Text = "Found: " + count.ToString();
}
else
{
listView1.Items.Remove(item);
}
}
button1.Text = "Clear";
textBox1.Visible = button3.Visible = button2.Visible = false;
}