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

做了一个程序要用到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替换成刚才的列的序号就行了~


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


  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值