鼠标在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);