我现在用Vs2003在做WinForm程序时碰到一个问题,客户要求软件的数据列表项(ListView控件),可以做到类似于网页中鼠标经过超链接动态改变字体颜色的效果。
    可窗体中ListView控件没有直接对应选中的ViewListItem项的方法,请教各位这种效果如何实现,如果可以请赐教一段演示代码。谢谢。

解决方案 »

  1.   

    需要自己编写MouseHover事件来实现不过ListView中有一个HoverSelection属性,当鼠标移到该行会自动变成选定项,勉强可以达到点效果,而且省时省力,实属居家旅行必备!^_^~
      

  2.   

    我解决了这个问题,
    但现在的情况是运行起来需要刷新ListViewItem控件,显示有闪动,是否有更好解决办法,望赐教。 private void listView1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
    {

    foreach(System.Windows.Forms.ListViewItem lvi in this.listView1.Items)
    {
    if((e.Y - lvi.Bounds.Top) >=0 && (e.Y - lvi.Bounds.Top)<lvi.Bounds.Height)
    {

    lvi.ForeColor = Color.Red;
    }
    else
    {
    lvi.ForeColor = Color.Black;
    }
    }

    }
      

  3.   

    在foreach之前加入this.listView1.BeginUpdate(),在foreach之后加入this.listView1.EndUpdate();试试
    注:是在循环体外加。。
      

  4.   

    我试过了,如果加了BeginUpdate()和EndUpdate()显示闪动更加利害。
    我想在方法外设置一个临时存放前一个已经变化的ListViewItem,在循环体里进行判断如果没改变过的就不对其颜色进行赋值。这样应该可以减少不少闪动。