2012-05-28 29 views
2

如果我点击鼠标列表视图的项目高亮ListViewItem的背景色,颜色变为“高亮”的颜色,但如果我这样做,通过这样的代码: (多选应该是真实的,也是我集HideSelection为False)通过代码

myListView1.Items[2].Selected = true; 

那么这将是灰色...坏了!我想这是同一高亮显示颜色,当我手动点击它们通过鼠标:(

我也尝试添加该代码,但没有工作,要么,还是灰色

myListView1.Items[2].BackColor = System.Drawing.Color.Blue; 

回答

1

这是行为。ListView控件中时,它已经选定的项目,但它是不集中

因此,要获得“蓝”色你之后,只需添加这一点;

listView1.Focus(); 
+0

两部作品并不起作用!在我的情况下,它的工作原理是因为我在SELECT ALL中编写它,所以所有的项目都应该被选中,但是如果我为例子中的项目2,3,6选择了一些项目,那么这是行不通的。然后调用焦点将突出显示ALL从2到6的项目,所以2,3,4,5,6 – Bohn

+0

这不会发生在我身上 - 你确定只有项目2,3,6被选中吗?检查ListView.SelectedIndices属性。 –

+0

是的,你是对的。不知道那次是怎么回事。好的解决方案谢谢。 – Bohn

0

你可以在你的listview的SelectedIndexChanged事件中试试这个吗?

ListViewItem lv = YourListview.GetItemAt(YourListView.PointToClient(Cursor.Position).X, YourListView.PointToClient(Cursor.Position).Y); 

// this kind of Control.GetItemAt() works everywhere you need to find your mouse position ;) 

// if you need to find position for screen (i.e. if you want to show a messagebox at the center of screen) you can use PointToScreen instead of PointToClient 

if (lv == null) 
{ 
    return; 
} 

else if (yourfirstpossibility == true) 
{ 
    lv.Selected = true; 
    lv.BackColor = Color.FromKnownColor(KnownColor.ButtonHighLight); 

// or which color you prefer. FromKnownColor retrieves system colors which you can see in backcolor/forecolor property => "system" named palette 

} 

这个代码我在item_checked事件中使用了我的列表视图的不同一点点(复杂)..希望它可以帮助你..

+0

此代码对回答问题没有任何用处。 –

+0

@RJLohan嗯..是的你是对的..谢谢你警告我.. 关于这个问题..我想/理解他想改变只是backcolor .. – sihirbazzz

+0

这不是一个答案,它应该是一个评论(除了它太长了,当然。) –