DataGridView设置CurrentCell不起作用

时间:2015-10-18 12:14:19

标签: c# winforms datagridview

我正在尝试填充DataGridView并预先选择一个单元格。 但它运作不佳。 我正在使用以下代码创建DataGridView

DataTable table = new DataTable();
table.Columns.Add("Column1");
table.Columns.Add("Column2");
table.Rows.Add("Row1");
table.Rows.Add("Row2");
table.Rows.Add("Row3");
table.Rows.Add("Row3");
table.Rows.Add("Row4");
table.Rows.Add("");

dataGridView1.DataSource = table;
dataGridView1.ReadOnly = false;
dataGridView1.Columns["Column1"].ReadOnly = true;
dataGridView1[1, 2].ReadOnly = true;
dataGridView1[1, 3].ReadOnly = true;

DataGridViewButtonCell button = new DataGridViewButtonCell();
dataGridView1[1, table.Rows.Count - 1] = button;
button.Value = "Go";
button.FlatStyle = FlatStyle.Flat;

dataGridView1.CurrentCell = dataGridView1[0, 1];

理论上,应选择右侧的第一个单元格,但选择第1列中的第3行。 这个问题会导致这个问题:

private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
{

}

或者

private void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e)
{

}

2 个答案:

答案 0 :(得分:1)

如果您想设置dataGridView1.CurrentCell,请注意dataGridView1[0, 1]第一个号码是columnIndex,第二个号码是rowIndex。因此,如果您想选择右侧的第一个单元格,您应该尝试这样做:

dataGridView1.CurrentCell = dataGridView1[1,0];//first row second column

答案 1 :(得分:1)

您使用以下

dataGridView1.CurrentCell = dataGridView1[0, 1];

并说

  

理论上,应选择右侧的第一个细胞

实际上,单元索引器的参数是columnIndex, rowIndex,所以上面应该选择第二行的第一列,它确实是这样做的。如果您打算选择第一行的第二列,请使用dataGridView[1, 0]