我想找到在listView1的textBox1字段中输入的某个字符串(文本)。所以当前的问题是,下面的代码可以正常工作,它的背景颜色发生了变化,另一个项目在悬停时会有相同的背景颜色。当选择行然后盘旋时,颜色会发生变化(当盘旋时深蓝色会变亮).listView保存在tabControl中。 任何想法为什么它旁边的项目得到背景颜色?任何解决方案都会很棒。
foreach (ColumnHeader sColumnHeader in listView1.Columns)
{
foreach (ListViewItem items in listView1.Items)
{
if (items.SubItems[sColumnHeader.Index].Text == textBox1.Text)
{
listView1.Items[items.Index].UseItemStyleForSubItems = false;
listView1.Items[items.Index].SubItems[sColumnHeader.Index]
.BackColor = Color.LightBlue;
}
}
}
以下是问题截图的链接: http://i.stack.imgur.com/A7H7E.png
答案 0 :(得分:0)
更新使用此代码
foreach (ColumnHeader sColumnHeader in listView1.Columns)
{
foreach (ListViewItem item in listView1.Items)
{
if (item.SubItems[0].Text == textBox1.Text)
{
listView1.Items[item.Index].UseItemStyleForSubItems = false;
listView1.Items[item.Index].SubItems[0]
.BackColor = Color.LightBlue;
}
}
}
答案 1 :(得分:0)
[这不是一个真正意义上的答案,但是评论的时间太长了]
您显示的代码对我来说非常合适 - 与textBox1中的文本匹配的子项目的背景更改为LightBlue。如果颜色在选择或悬停时发生变化,则与此特定位代码无关。
显然,如果您将FullRowSelect
设置为true
,则在选择行时背景会发生变化。
Items
和SubItems
集合:
foreach (ListViewItem item in listView1.Items)
{
foreach (ListViewItem.ListViewSubItem subItem in item.SubItems)
{
if (subItem.Text == textBox1.Text)
{
item.UseItemStyleForSubItems = false;
subItem.BackColor = Color.LightBlue;
}
}
}
答案 2 :(得分:0)
问题是由于listView上的激活是在“OneClick”上。
将其重置为标准修复此问题。
对不起,感谢所有帮助过的人。