2014-01-14 610 views
6

我在TabPage上有一個DataGridView。當用戶點擊一行時,會出現第二個DGV。每行都與其自己的裝有數據的DGV相關聯。我想要的是,當用戶從一行到另一行時,DataGridView也會改變。到目前爲止,我已經嘗試了SelectionChanged事件,但我不希望DGV在用戶單擊同一行中的單獨單元格的情況下重新加載。任何幫助將不勝感激。基於行選擇的Datagridview SelectionChanged事件

void dgv1_CellClick(object sender, DataGridViewCellEventArgs e)   
{  
    int rowIndex = dgv1.Rows[e.RowIndex].Index; 

    if (dgv1 == null) 
     return; 
    if (dgv1.Rows[e.RowIndex].Cells[rowIndex].Selected == true); 
    { 
     dgv2.Size = new Size(dgv2.Width + 800, dgv2.Height); 
     dgv2.Location = new Point(0, 500); 

     tp.Controls.Add(dgv2); 

     Console.WriteLine("Row clicked"); 
    } 
} 

-Tatiana

+1

您可以創建一個代表當前選定行的屬性,然後檢查新選擇的行是否相同? – dursk

+0

實際上,當前選定的行是dgv.CurrentRow的屬性,問題是如何檢查新選擇的行。其次,CurrentRow的類型DataGridViewRow不能轉換爲int類型,因此當試圖將它與任何int進行比較時會出現錯誤。 –

+1

DataGridViewRow有一個Index屬性,所以它會是dgv.CurrentRow.Index。 MSDN:http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewrow_properties%28v=vs.110%29.aspx – dursk

回答

11
int curRow = -1; 

    private void dgv1_SelectionChanged(object sender, EventArgs e) 
    { 
     if (dgv1.CurrentRow.Index != curRow) 
     { 
      curRow = dgvPatientDetail.CurrentRow.Index;   
     } 
+5

或者設置dgv1.SelectMode = FullRowSelect;當點擊位於同一行內時不應觸發SelectionChanged –

1

我知道後是舊的,但對於其他人閱讀: 設置..

DataGridView1.FullRowSelect =真

應解決這個問題。

相關問題