我在C#中使用ListView来创建一个网格.我想找出一种能够以编程方式突出显示特定单元格的方法.我只需要突出显示一个单元格.
我已经尝试所有者绘制的子项,但使用下面的代码,我得到突出显示的单元格,但没有文字!有没有什么想法如何让这个工作?谢谢你的帮助.
//m_PC.Location is the X,Y coordinates of the highlighted cell. void listView1_DrawSubItem(object sender,DrawListViewSubItemEventArgs e) { if ((e.ItemIndex == m_PC.Location.Y) && (e.Item.SubItems.IndexOf(e.SubItem) == m_PC.Location.X)) e.SubItem.BackColor = Color.Blue; else e.SubItem.BackColor = Color.White; e.DrawBackground(); e.DrawText(); }
解决方法
您可以在没有所有者绘制列表的情况下执行此操作:
// create a new list item with a subitem that has white text on a blue background ListViewItem lvi = new ListViewItem( "item text" ); lvi.UseItemStyleForSubItems = false; lvi.SubItems.Add( new ListViewItem.ListViewSubItem( lvi,"subitem",Color.White,Color.Blue,lvi.Font ) );
ListViewSubItem构造函数的Color参数控制子项的前景色和背景色.这里要做的关键是在列表项中将UseItemStyleForSubItems设置为False,否则您的颜色更改将被忽略.
我认为你的所有者绘制解决方案也会有效果,但是当您将背景更改为蓝色时,您必须记住更改文本(前景)颜色,否则文本将很难看到.