2014-01-14 22 views
6

私はTabPage上にDataGridViewを持っています。ユーザーが行をクリックすると、2番目の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です。問題は、新しく選択した行をチェックする方法です。第2に、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 =真

解決する必要があります。.. 設定をこの問題。

関連する問題