2014-01-14 4 views
6

У меня есть 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

Я знаю, что пост старый, но для других чтения: Setting ..

DataGridView1.FullRowSelect = истинный

должен решить Эта проблема.

Смежные вопросы