首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

鼠标在dataGridView控件上移动时的有关问题,请问下了

2011-12-28 
鼠标在dataGridView控件上移动时的问题,请教下了!这是我写的鼠标在dataGridView控件上移动时,鼠标移动到哪

鼠标在dataGridView控件上移动时的问题,请教下了!
这是我写的鼠标在dataGridView控件上移动时,鼠标移动到哪一行,使哪一行变色.
但是问题是,只要是鼠标在dataGridView控件上移动.单元格的数据就会闪动,不知道是什么原因. 请问下,大家有没有其他方法实现,同样的功能?谢谢了,
///   <summary>
                ///   鼠标移动事件处理
                ///   </summary>
                ///   <param   name= "sender "> </param>
                ///   <param   name= "e "> </param>
                private   void   dataGridView1_MouseMove(object   sender,   MouseEventArgs   e)
                {

                        DataGridView.HitTestInfo   hti   =   this.dataGridView1.HitTest(e.X,   e.Y);

                        //如果坐标在单元格内
                        if   (hti.Type   ==   DataGridViewHitTestType.Cell)
                        {
                                //取消选择所有的选定单元格
                                this.dataGridView1.ClearSelection();

                                //   设置控件内所有行的颜色
                                for   (int   i   =   0;   i   <   this.dataGridView1.Rows.Count;   i++)
                                {
                                        this.dataGridView1.Rows[i].DefaultCellStyle.BackColor   =   Color.White;
                                        if   (i   %   2   ==   0)
                                        {
                                                this.dataGridView1.Rows[i].DefaultCellStyle.BackColor   =   Color.FromArgb(224,   224,   224);
                                        }
                                        else
                                        {
                                                this.dataGridView1.Rows[i].DefaultCellStyle.BackColor   =   Color.FromArgb(192,   192,   192);


                                        }

                                        if   (this.dataGridView1.RowCount   >   hti.RowIndex)
                                        {
                                                //设置控件内鼠标移动到的颜色
                                                this.dataGridView1.Rows[hti.RowIndex].DefaultCellStyle.BackColor   =   Color.FromArgb(255,   255,   192);
                                        }


                                }
                        }

                }

[解决办法]
加上这个吧,就是速度稍微受点影响。这样写是不太好,谁让DoubleBuffered是protected属性呢。
typeof(DataGridView).GetProperty( "DoubleBuffered ", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(dataGridView, true, null);

热点排行