ListView中选定项的颜色

3

我写了 listView1.Items[1].Selected = true; 但是它并没有高亮显示那个项目...出了什么问题吗? 我还把 HideSelection 属性改为 False,这样我至少可以看到一些灰色高亮颜色,但是蓝色在哪里呢?当我用鼠标点击时,它是蓝色的,但是当我像上面发布的代码一样设置时,它不是蓝色的...我做错了什么吗?

2个回答

3
这是你的Windows颜色在欺骗你。
我刚刚测试了一下,将HideSelection设置为false后,我选择了一个项目,然后发现该项目变成了灰色,这是Windows中非活动控件中所选项目的颜色定义。
如果你想让它变成蓝色,这很可能是活动控件中所选项目的颜色,那么就把焦点设置到那个ListView上,说listView1.Focus(),你会看到你所说的颜色,但你刚刚把焦点转移到它上面了,所以要小心。

嗯,好的,那么如果我使用 ListBOX,为什么就没有这个问题了呢? - Bohn
1
好吧,严格来说这不是一个“问题”,这只是微软决定的方式。下次见到比尔时我会问他的 =)ListBox似乎不关心非活动控件的颜色,它始终使用活动控件的颜色。但非常注重细节。 - BeemerGuy
LOL!最好问Hejlsberg!他是首席架构师!...不幸的是,我不能使用“焦点”技术,因为我正在文本框中输入搜索字符串,并在ListView中突出显示结果,所以如果我将焦点移动到ListView,则用户无法继续在文本框中输入 :( - Bohn
1
没错,这正是我所怀疑的;你不想将控制权转移给它。但这只是告诉你,在背景中“突出显示”某些内容时,ListView 不是一个好选择。抱歉。 - BeemerGuy
无论HideSelection设置如何,对我来说(VS 2013)它都不起作用,而fab的代码却可以。 - Jack Griffin

2
listView1.Select();
listView1.Items[index].Selected = true;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接