using System.Reflection;
假如datagrid是grdDatavoid grdData_Scroll( sender ,e )
{
Type type = typeof( DataGrid ); 
FieldInfo fi = type.GetField( "firstVisibleRow" , BindingFlags.InvokeMethod | BindingFlags.Instance | BindingFlags.NonPublic );
int firstRowNumber = (int)fi.GetValue( grdData ) ; //这就是第一列可见的列数,除以datagrid绑定数据源的列数,就是你所像要的}

解决方案 »

  1.   

    To : OneDotRed() 
        你说的"firstVisibleRow"是什么东西(GetField这句话中的)?我是不是要改成我第一列的名字啊?但是改成第一列的名字,还是不行啊.得到的firstRowNumber=0.问题还是没有解决啊.请大家帮帮忙.
      

  2.   

    firstVisibleRow是DataGrid的私有变量,就像DataGrid.Name一样,不要改它的名字。这是通过反射,得到当前datagrid的可视的第一列数据行所在的位置。
    打个比方
    一个datagrid有一千行数据,现在滚动到中间,你所看见的第一列就是这个可见的行,该列在datagrid中的firstRowNumber位置。上面的方法我自己测试过的。你将上面的代码不要改动试试看,除了datagrid的名称。
      

  3.   

    javascript:
    document.body.scrollTop/scrollLeft
      

  4.   

    问题已经解决了.
    DataGrid.VertScrollBar.Value就可以获得了.