ListView设置为Detail模式,允许整行选择,光标离开后保留选择的行。
当ListView是当前控件时,选择行的颜色为蓝底白字,非常清晰,但失去焦点后,选择的项马上就成了浅灰色的背景了,看不清楚,尤其是液晶显示器,更是不知道选择的哪一行,有什么办法进行处理,我目前的权宜之计是将整个ListView背景设置成很深的背景,这样,当ListView失去焦点时,灰色的背景就很明显了,但深色背景实在很难看,和整个界面颜色不协调,我希望使用默认的白色背景,当失去焦时,仍然很清楚地看到当前选择的行,该如何处理?好象无法设置选择状态的颜色。
当ListView是当前控件时,选择行的颜色为蓝底白字,非常清晰,但失去焦点后,选择的项马上就成了浅灰色的背景了,看不清楚,尤其是液晶显示器,更是不知道选择的哪一行,有什么办法进行处理,我目前的权宜之计是将整个ListView背景设置成很深的背景,这样,当ListView失去焦点时,灰色的背景就很明显了,但深色背景实在很难看,和整个界面颜色不协调,我希望使用默认的白色背景,当失去焦时,仍然很清楚地看到当前选择的行,该如何处理?好象无法设置选择状态的颜色。
解决方案 »
- 关于控件的数据绑定。
- C# WebClient OpenRead如何正常处理500内部服务器错误
- PANEL里控件的位置
- 我憋了很久的问题:为什么flash+数据库+ASP/ASP.NET没有让AJAX消失?
- 如何修改c#程序运行时在进程中的名字?
- 水晶报表的一点小问题
- WinForm应用程序能用System.Configuration.ConfigurationManager吗?
- 请问如何让gridview中的某些文字高亮显示
- 关于tableadapter的问题
- C# 强类型DataSet 删除数据 更新到数据库
- System.IO 文件正由另一进程使用,因此该进程无法访问该文件
- C#判断控件是否存在!!跨窗体操作问题!!
这样,ListView失去焦点时,就不会调用系统的颜色绘制选择项而使用用户指定的颜色了,然后用下面的代码:
private void lsvSchem_SelectedIndexChanged(object sender, EventArgs e)
{
foreach (ListViewItem item in lsvSchem.Items)
{
if (item.Selected)
{
item.BackColor = Color.Blue;//指定颜色
item.ForeColor = Color.White;
}
else
{
item.BackColor = lsvSchem.BackColor;//使用默认颜色
item.ForeColor = lsvSchem.ForeColor;
}
}
}
也就是当选择项发生改变时,将非选择项使用默认的颜色,选择项重新指定颜色,我曾经用过更换背景等多种方法,还是这个方法好,我感觉到自己好象很有才,哈哈