重新绘制时,ListViewItem会丢失背景颜色,并且光标位于项目上方

时间:2012-09-03 10:31:36

标签: c# winforms listview

我有一个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中的任何项目上时,则该项目被绘制为具有不应该是红色的白色背景颜色。但是,一旦鼠标再次没有覆盖该项目,其重绘将返回红色。

如何使用白色背景绘制光标所在的项目,无论“真实”的背景颜色属性如何,我该怎么办?

1 个答案:

答案 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