2012-01-02 100 views
1

在下面的代码中,通过datagridview1_RowsAdded事件处理程序中的代码更改了选择后触发的datagridview1_SelectionChanged事件,CurrentRow属性为null。但我已经将它设置在datagridview1_RowsAdded处理程序中,并且它在那里不为空。为什么DataGridView SelectionChanged事件不会触发?

但是,如果我在datagridview1_RowsAdded处理程序中注释两行并通过在任意行上单击鼠标单击来选择行,则程序将正常工作。谁能告诉我为什么会发生这种情况?

这里是我的代码:

private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e) 
{ 
    dataGridView1.CurrentCell = dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells[1]; 
    dataGridView1.CurrentCell.Selected = true; 
} 

private void dataGridView1_SelectionChanged(object sender, EventArgs e) 
{ 
    if (dataGridView1.CurrentRow != null) 
    { 
     if (dataGridView1.CurrentRow.Index != -1) 
     { 
      dataGridView2.Enabled = true; 
      dataGridView3.Enabled = true; 
      dataGridView4.Enabled = true; 
     } 
     else 
     { 
      dataGridView2.Enabled = false; 
      dataGridView3.Enabled = false; 
      dataGridView4.Enabled = false; 
     } 
    } 
    else 
    { 
     dataGridView2.Enabled = false; 
     dataGridView3.Enabled = false; 
     dataGridView4.Enabled = false; 
    } 
} 
+0

对不起,问题的标题,它的第一行后有点误导 – armin 2012-01-02 19:02:39

回答

1

在你RowsAdded方法,您已选择当前单元格,但不是当前行。你可以利用这个选择当前行:

dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Selected = true; 
+0

不工作的原因在rows_added它去selection_changed事件运行的其他行之前。 – armin 2012-01-04 07:23:49

+0

只是要清楚:你是否说在明确选择后CurrentRow属性仍为空?尝试在选择单元格之前选择该行。 – Abbas 2012-01-04 10:15:17

相关问题