2012-01-02 104 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

相關問題