当前单元格指的是 DataGridView 焦点所在的单元格,它可以通过 DataGridView 对象的 CurrentCell 属性取得。如果当前单元格不存在的时候,返回 Nothing(C# null)

[VB.NET]
' 取得当前单元格内容
Console.WriteLine(DataGridView1.CurrentCell.Value)
' 取得当前单元格的列 Index
Console.WriteLine(DataGridView1.CurrentCell.ColumnIndex)
' 取得当前单元格的行 Index
Console.WriteLine(DataGridView1.CurrentCell.RowIndex)

[C#]
// 取得当前单元格内容
Console.WriteLine(DataGridView1.CurrentCell.Value);
// 取得当前单元格的列 Index
Console.WriteLine(DataGridView1.CurrentCell.ColumnIndex);
// 取得当前单元格的行 Index
Console.WriteLine(DataGridView1.CurrentCell.RowIndex);


另外,使用 DataGridView.CurrentCellAddress 属性(而不是直接访问单元格)来确定单元格所在的行: DataGridView.CurrentCellAddress.Y 和列: DataGridView.CurrentCellAddress.X 。这对于避免取消共享行的共享非常有用。

当前的单元格可以通过设定 DataGridView 对象的 CurrentCell 来改变。可以通过 CurrentCell 来设定
DataGridView
的激活单元格。将 CurrentCell 设为 Nothing(null) 可以取消激活的单元格。

[VB.NET]
' 设定 (0, 0) 为当前单元格
DataGridView1.CurrentCell = DataGridView1(0, 0)

[C#]
// 设定 (0, 0) 为当前单元格
DataGridView1.CurrentCell = DataGridView1[0, 0];


在整行选中模式开启时,你也可以通过 CurrentCell 来设定选定行。

/**/ /// <summary>
/// 向下遍历
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button4_Click( object sender, EventArgs e)
... {
int row = this .dataGridView1.CurrentRow.Index + 1;
if (row > this .dataGridView1.RowCount - 1)
row = 0;
this .dataGridView1.CurrentCell = this .dataGridView1[0, row];
}

/**/ /// <summary>
/// 向上遍历
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button5_Click( object sender, EventArgs e)
... {
int row = this .dataGridView1.CurrentRow.Index - 1;
if (row < 0)
row =
this .dataGridView1.RowCount - 1;
this .dataGridView1.CurrentCell = this .dataGridView1[0, row];
}


*
注意 : this.dataGridView 的索引器的参数是 : columnIndex, rowIndex 或是 columnName, rowIndex
这与习惯不同。