可以考虑使用CurrentCellChanged事件, 然后在事件里写判断逻辑:
public class YourForm : Form
{
  ...
  private System.Windows.Forms.DataGridCell _prevCell = new DataGridCell(-1, -1);  private void myDataGrid_CurrentCellChanged(object sender, System.EventArgs e)
  {
    if (_prevCell.RowNumber == myDataGrid.CurrentCell.RowNumber - 1)
    {
       // 向下移动一行
       ...
    }
    if (_prevCell.RowNumber == myDataGrid.CurrentCell.RowNumber + 1)
    {
       // 向上移动一行
       ...
    }
    _prevCell = myDataGrid.CurrentCell;
  }  ...
}

解决方案 »

  1.   

    我用了一个间接的方法,我的datagrid是同dataset绑定后产生的,同时表中有一个主键字段,我将主建同文本框绑定,这样,如果文本框内容改变,说明记录位置更改了,也就达到了你的目的.
      

  2.   

    ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
      

  3.   

    DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)你可以在这个事件里面写代码控制。