2

如果我用鼠标单击列表视图的一个项目,颜色将变为“突出显示”颜色,但如果我通过如下代码执行此操作:( MultiSelect 应该为 True,并且我将 HideSelection 设置为 False)

myListView1.Items[2].Selected = true;

那么它将是灰色的......不好!当我用鼠标手动单击它们时,我希望它具有相同的突出显示颜色:(

我也尝试添加此代码,但这也不起作用,仍然是灰色的

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

2 回答 2

1

这是 ListView 在选择项目时的行为,但它没有获得焦点。

因此,要获得您所追求的“蓝色”,只需添加它;

listView1.Focus();
于 2012-05-28T02:07:18.463 回答
0

你能在你的列表视图的 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 事件中为我的列表视图使用的这段代码有点不同(更复杂)..希望它对你有帮助..

于 2012-05-28T02:20:44.773 回答