web-dev-qa-db-fra.com

Sélection de lignes par programme dans DataGridView

Je veux sélectionner une ligne de lignes précédemment sélectionnées après un événement, mon code est comme ci-dessous. 

int currentRow = dgvIcbSubsInfo.CurrentCell.RowIndex;
//code to execute
dgvIcbSubsInfo.Rows[currentRow].Selected = true;

après avoir exécuté le code, l'aperçu sera comme ci-dessous. mais j'ai besoin du symbole > dans id = 1272741 (sélection bleue) et non dans 1272737 

enter image description here

21
manoj

Vous avez probablement déjà jeté un œil à la propriété DataGridView.CurrentRow , qui est une propriété en lecture seule:

Obtient la ligne contenant la cellule en cours.

Mais dans la section des remarques, il est écrit:

Pour modifier la ligne en cours, vous devez définir la propriété CurrentCell sur a cellule dans la rangée souhaitée.

De plus, dans la propriété DataGridView.CurrentCell , nous découvrons que:

Lorsque vous modifiez la valeur de cette propriété, l'événement SelectionChanged se produit avant l'événement CurrentCellChanged. Tout événement SelectionChanged gestionnaire accédant à la propriété CurrentCell à ce moment-là obtiendra son valeur précédente.

Vous n'avez donc pas besoin de sélectionner la variable currentRow car elle sera sélectionnée lorsque vous définissez la valeur CurrentCell (à moins que du code ne soit exécuté dans la portée actuelle entre les événements SelectionChanged et CurrentCellChanged Essaye ça:

//dgvIcbSubsInfo.Rows[currentRow].Selected = true;
dgvIcbSubsInfo.CurrentCell = dgvIcbSubsInfo.Rows[currentRow].Cells[0];
46
Alex Filipovici

Je pense que vous souhaitez mettre en évidence la ligne. S'il vous plaît essayez de suivre le code, je pense que cela pourrait aider:

Color color = dgv.Rows[prevRowIndex].DefaultCellStyle.SelectionBackColor;
dgv.Rows[curRowIndex].DefaultCellStyle.SelectionBackColor = color;
0
mihirj

Essayez ce qui suit pour changer la ligne actuelle. Étant donné que le PO ignore un peu quelle ligne doit être la nouvelle ligne, mon exemple montre simplement le passage de la ligne actuelle à la ligne précédente (s’il existe une ligne précédente) La première ligne de code est facultative. Vous pouvez également coder en dur col à 0 (ou une autre colonne) pour utiliser une colonne fixe si vous ne souhaitez pas utiliser FullRowSelect.

dataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
int row = dataGridView.CurrentCell.RowIndex;
int firstRow = dataGridView.Rows.GetFirstRow(DataGridViewElementStates.None);
if (row != firstRow)
{
  row--;
  int col = dataGridView.CurrentCell.ColumnIndex;
  dataGridView.CurrentCell = dataGridView[col, row];
}
0
Goal Man