1

我有一个 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 上时,该项目被绘制为白色背景色,而不是应有的红色。但是,一旦鼠标没有再次悬停在该项目上并且其重绘将返回为红色。

无论“真实”背景颜色属性如何,我如何才能停止它总是用白色背景绘制光标所在的项目?

4

1 回答 1

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

于 2012-09-03T13:04:46.693 回答