如何实现 C# winform ListView 鼠标移入行时,行变色高亮,

解决方案 »

  1.   


      private ListViewItem prItem;
            private void listView1_ItemMouseHover(object sender, ListViewItemMouseHoverEventArgs e)
            {
                if (prItem != null)
                {
                    prItem.BackColor = Color.White;
                }
                prItem = e.Item;
                e.Item.BackColor = Color.Red;
            }
      

  2.   

    谢谢,在这个帖子上找到方法,但鼠标移入时还是闪。
    http://bbs.csdn.net/topics/300222665
      

  3.   

    在listView1_MouseMove的事件里写代码
      

  4.   


            ListViewItem oldSelectedItem = null;
            private void listView1_ItemMouseHover(object sender, ListViewItemMouseHoverEventArgs e)
            {
                if (oldSelectedItem != null)
                {
                    oldSelectedItem.BackColor = Color.White;
                }
                e.Item.BackColor = Color.LightSkyBlue;
                e.Item.ToolTipText = string.Format("点击搜索\"{0}\"的歌曲", e.Item.Text);
                oldSelectedItem = e.Item;
            }
      

  5.   

    我用的是这个。ItemMouseHover 反应太慢
           private void listView1_MouseMove(object sender, MouseEventArgs e)
            {
                ListView _ListView = (ListView)sender;
                ListViewItem _OldItem = null;
                if (_ListView.Tag != null) _OldItem = (ListViewItem)_ListView.Tag;            ListViewItem _Item = _ListView.GetItemAt(e.X, e.Y);
                if (_Item != null)
                {
                    if (_OldItem != null && !_OldItem.Equals(_Item)) _OldItem.BackColor = _ListView.BackColor;
                    _Item.BackColor = Color.Red;
                    _ListView.Tag = _Item;
                }
                else
                {
                    if (_OldItem != null && !_OldItem.BackColor.Equals(_ListView.BackColor)) _OldItem.BackColor = _ListView.BackColor;
                } 
            }