首页 > Windows开发 > 详细

关于C#的DataGridView刷新光标会跳的解决~

时间:2014-04-19 23:12:28      阅读:751      评论:0      收藏:0      [点我收藏+]

做了一个程序要用到DataGridView,然后再刷新的时候由于光标会自动跳到序号为0的行,导致有的时候看数据十分不爽。。。

因为用的DataGridView是绑在一个DataTable上的,所以没法往刷新函数里面写。。。

一开始是想找找有没有一个刷新事件,然后在刷新事件里面写,但是因为没找到那个事件,所以宣告放弃。

但是后来一想,因为DataTable的改变导致了DataGridView的刷新,所以可以在改变DataTable的方中控制DataGridView-_-||(因为都是界面,所以DataTable,DataGridView都在一个Form类里面,所以可以互相调,别吐槽结构粗糙哈~)

因为要看某一行,所以鼠标肯定要点那一行,所以用一个字段记录鼠标点在哪一行,用DataGridView中的CellClick这个事件就行。

protected virtual void DGV_Click(object sender, DataGridViewCellEventArgs e)
{
       if (e.RowIndex >= 0) DGVRowIndex = e.RowIndex;
}
如果点的是列头(就是会排序的那个地方)那么e.RowIndex的值是-1,所以要加一下判断~

e.RowIndex就是鼠标单击的那一行的序号,用DGVRowIndex记录。

然后在改变DataTable的方法中添加就行了

if (dgv.Rows.Count >= DGVRowIndex)
                dgv.CurrentCell = dgv.Rows[DGVRowIndex].Cells[0];
dgv是一个DataGridView的对象,CurrentCell能用来设置处于活动的单元格,把它变成刚才点的那行第一个单元格就行。

至于那个if是为了防止由于数据源删除了一些行,导致现在的总行数比之前鼠标点的行的序号要小而产生的异常。。。


如果想更精确一些,就用e.ColumnIndex来获取刚才点的是第几列,然后把上面Cells[0]中的0替换成刚才的列的序号就行了~


这样刷新之后就不会跳了~


关于C#的DataGridView刷新光标会跳的解决~,布布扣,bubuko.com

关于C#的DataGridView刷新光标会跳的解决~

原文:http://blog.csdn.net/st_kalecgos/article/details/24132317

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!