由于datagridview里边的数据是每秒中都在实时的刷新.那么当我去往下拖动右边的条的时候,他就会去因为刷新而又蹦到上边去了。也就是说根本就找不到下面未显示出来的数据,然后我还要对下边的数据进行操作的.特烦.希望各位能帮帮我怎么去解决这个问题,谢谢了

解决方案 »

  1.   

    这是由于你的数据是直接绑定或者直接赋值到DataGridView中的,而不是自绘的,应此会有一个焦点的问题。
    解决方法
    1.将DataGridView对象设置为只读的,然后自己绘制要添加的数据,也就是一个Cell一个Cell的绘制。
    2.使用DataGridView中的方法控制显示样式。如FirstDisplayedCell ,FirstDisplayedScrollingColumnHiddenWidth、FirstDisplayedScrollingColumnIndex 、FirstDisplayedScrollingRowIndex 等等的方法自己控制吧。
    建议你用第一种,将数据放在后台的buffer中(你可以用Datatable),然后在paint方法中自己绘制。这样就没有你说的问题了。而且可塑性强。
      

  2.   

    通过设置FirstDisplayedScrollingRowIndex属性即可实现,如:int currentIndex = dataGridView1.FirstDisplayedScrollingRowIndex;dataGridView1.DataSource = dt;dataGridView1.FirstDisplayedScrollingRowIndex = currentIndex;
      

  3.   

    加panel应该不行吧,始终刷新的是datagridview,只是最外层加了一个容器而已也.
      

  4.   

    我给你的代码,你是加在哪里.应加在刷新DataGridView的地方!加一个判断:
    if(dataGridView1.Rows.Count>currentIndex){
    dataGridView1.FirstDisplayedScrollingRowIndex = currentIndex;
    }
      

  5.   

    如果是綁定datatable,FirstDisplayedScrollingRowIndex 可以設置显示在 DataGridView 上的第一行的數據,
    不能去拖動滾動條
      

  6.   

    我現在想做類似sql2005查詢分析器的效果
    如果數據糧很大,分批取出來,然後馬上顯示在表格上
      

  7.   


    是这样的.我开了一个线程.这个线程每秒都去执行那个方法,而那个方法就是去查询数据库然后绑定datagridview.
    我把你给的那段就加在了帮定那儿.出现那个错误.现在加了这个判断仍然出现的是: 指定的参数超出有效值的范围.赐教...
      

  8.   

    dataGridView1.FirstDisplayedScrollingRowIndex = currentIndex; 
    这一句
      

  9.   

    5 楼正解,只是需要大家做一些异常判定。例如:
    1.刚开始选择的index,重新绑定后是否还存在
    2.刚开始选择的index,重新绑定并排序后,是否还存在
    等等。
      

  10.   

    5 楼正解,只是需要大家做一些异常判定。例如:
    1.刚开始选择的index,重新绑定后是否还存在
    2.刚开始选择的index,重新绑定并排序后,是否还存在
    等等。