2015-10-18 104 views
0

我试图填充DataGridView并预选一个单元格。 但它运行不正常。 我使用此代码创建DataGridViewDataGridView设置CurrentCell不起作用

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) 
{ 

} 

回答

1

您使用以下

dataGridView1.CurrentCell = dataGridView1[0, 1]; 

理论上的第一个单元格上应选择右侧

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

+0

我测试过dataGridView1.CurrentCell = dataGridView1 [0,0]; 弼第二列和第二行被选中。 这就像他不知道第一行。 – ComanderKai77

+0

@ ComanderKai77何时执行上述方法 - 窗体构造函数,加载事件或? –

+0

在Form1_Load中,我使用此代码调用方法。 – ComanderKai77

1

当你想设置dataGridView1.CurrentCell你应该注意,在dataGridView1[0, 1]第一个数字是columnIndex和第二个数字是rowIndex。所以,如果你想选择右侧的第一个单元格,你应该试试这个:

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