Datagridview SelectionChanged basée sur la sélection d'une ligne

J'ai un DataGridView sur un élément tabpage. Lorsque l'utilisateur clique sur une ligne, une deuxième DGV s'affiche. Chaque ligne est associée à son propre DGV rempli avec des données. Ce que je veux, c'est pour quand l'utilisateur passe d'une ligne à l'autre, le DataGridView trop de changements. Jusqu'à présent, j'ai essayé de l'événement SelectionChanged mais je ne veux pas la DGV pour recharger dans le cas où l'utilisateur clique sur une autre cellule de la même ligne. Toute aide serait grandement apprécié.

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

  • Pouvez-vous créer une propriété qui représente la ligne sélectionnée, puis vérifiez si la nouvelle ligne sélectionnée est la même ou pas?
  • Il y a réellement une propriété correspondant à la ligne sélectionnée qui est dgv.CurrentRow le problème est de savoir comment vérifier la nouvelle ligne sélectionnée. Deuxièmement, CurrentRow est de type DataGridViewRow qui ne peuvent pas être convertis en type int et donc j'obtiens une erreur lorsque vous tentez de le comparer à tout int.
  • DataGridViewRow a un Indice de la propriété, de sorte qu'il serait dgv.CurrentRow.Index. MSDN: msdn.microsoft.com/en-us/library/...
  • l'utilisation de e.rowIndex à l'intérieur de rowenter et rowleave. ils déclenchent lorsque vous accédez à une ligne vers le haut ou vers le bas (ne pas vous obliger à entrer en mode d'édition de cette cellule/ligne ) chat si vous utilisez dgv.currentRow il vous donnera la ligne précédente, il peut vous confondre. assurez-vous d'utiliser l'e.rowIndex qui vient de l'événement.