我有一个listview控件显然有很多listviewitems,每当控件重新绘制鼠标“当时”失去它的背景颜色的项目时(即它是白色的)。
再次绘制项目并且光标未覆盖时,将恢复正确的背景颜色。
有谁知道为什么会发生这种情况以及如何阻止它?
任何帮助将不胜感激
要扩展这一点,并希望提供更多的背景......
它发生在Windows 7,.NET 3.5上(尽管当项目也以4.0为目标时也会发生这种情况)。我的开发计算机上的主题是Viao Theme 5,但它也发生在我的另一台具有默认Windows 7主题的机器上。
列表视图实例化如下......
this.PlaylistTrackList.Cursor = System.Windows.Forms.Cursors.Hand;
this.PlaylistTrackList.Dock = System.Windows.Forms.DockStyle.Fill;
this.PlaylistTrackList.FullRowSelect = true;
this.PlaylistTrackList.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
this.PlaylistTrackList.LabelWrap = false;
this.PlaylistTrackList.Location = new System.Drawing.Point(4, 4);
this.PlaylistTrackList.Margin = new System.Windows.Forms.Padding(4);
this.PlaylistTrackList.MultiSelect = false;
this.PlaylistTrackList.UseCompatibleStateImageBehavior = false;
this.PlaylistTrackList.View = System.Windows.Forms.View.Details;
假设有5个列表视图项,A,B,C,D和E.如果项目BC和D的背景颜色属性为红色,则不选择任何内容,也不会选择任何内容。当由于某种原因重新绘制列表视图控件并且光标恰好在BC或D中的任何项目上时,则该项目被绘制为具有不应该是红色的白色背景颜色。但是,一旦鼠标再次没有覆盖该项目,其重绘将返回红色。
如何使用白色背景绘制光标所在的项目,无论“真实”的背景颜色属性如何,我该怎么办?
答案 0 :(得分:0)
按如下方式初始化ListView控件:
listView1.BackColor = Color.Black;
listView1.ForeColor = Color.White;
listView1.Dock = DockStyle.Fill;
listView1.View = View.Details;
listView1.FullRowSelect = true;
有关详细信息,请查看以下链接: http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.ownerdraw.aspx