看起來你需要這個:
private class TestClass
{
public int Id
{
get;
set;
}
public string Text
{
get;
set;
}
public string Detail
{
get;
set;
}
}
private void ListViewSearch_Load(object sender, EventArgs e)
{
List<TestClass> source = new List<TestClass>();
source.Add(new TestClass { Id = 1, Text = "one", Detail = "D1" });
source.Add(new TestClass { Id = 2, Text = "two", Detail = "D2" });
source.Add(new TestClass { Id = 3, Text = "three", Detail = "D1" });
source.Add(new TestClass { Id = 4, Text = "four", Detail = "D3" });
source.Add(new TestClass { Id = 5, Text = "five", Detail = "D6" });
source.Add(new TestClass { Id = 6, Text = "5", Detail = "D6" });
listView1.Columns.Add("Id");
listView1.Columns.Add("Text");
listView1.Columns.Add("Detail");
source.ForEach(x =>
{
ListViewItem item = new ListViewItem(x.Id.ToString());
item.UseItemStyleForSubItems = false;
item.SubItems.Add(x.Text);
item.SubItems.Add(x.Detail);
listView1.Items.Add(item);
});
listView1.View = View.Details;
listView1.GridLines = true;
comboBox1.DataSource = listView1.Columns;
comboBox1.DisplayMember = "Text";
comboBox1.ValueMember = "Text";
}
private void textBox1_Leave(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(textBox1.Text))
{
foreach (ListViewItem item in listView1.Items)
{
for (int subItemIndex = 0; subItemIndex < item.SubItems.Count; subItemIndex++)
{
if (subItemIndex == comboBox1.SelectedIndex && item.SubItems[subItemIndex].Text.Contains(textBox1.Text))
{
item.SubItems[subItemIndex].BackColor = SystemColors.Highlight;
item.SubItems[subItemIndex].ForeColor = SystemColors.HighlightText;
}
else
{
item.SubItems[subItemIndex].BackColor = Color.Transparent;
item.SubItems[subItemIndex].ForeColor = SystemColors.WindowText;
}
}
}
}
}
_「目前,我能夠搜索到,但只使用一個變量」 _這是什麼意思?哪個變量?還要注意,這是一個陳述,而不是一個問題。顯然,你希望能夠通過所有變量進行搜索,而不僅僅是一個,但你需要什麼幫助?這也有助於瞭解什麼'listView.Items'包含順便說一句。 – stakx
據我所知你的問題,你想要的是能夠搜索多個變量。但是,您希望這些都來自相同的輸入框,並在所有列上搜索該值?每個列的輸入並具有必須匹配的多個搜索值?這究竟是什麼,是你想要的結果,你試過什麼? – maam27
如果您想要查找SubItems(https://msdn.microsoft.com/en-us/library/system.windows.forms.listviewitem.subitems(v=vs.110).aspx)集合,遍歷所有其他列值並根據搜索文本進行測試。正如其他評論所指出的那樣,從問題中確切地說明你究竟在做什麼並不清楚。 – ScheuNZ