webentwicklung-frage-antwort-db.com.de

Zeilen programmgesteuert in DataGridView auswählen

Ich möchte die Zeile der zuvor ausgewählten Zeilen nach einem Ereignis auswählen, mein Code lautet wie folgt. 

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

nach der Ausführung des Codes wird die Vorschau wie folgt angezeigt. aber ich brauche das symbol > in id = 1272741 (blaue auswahl) und nicht in 1272737 

enter image description here

21
manoj

Möglicherweise haben Sie sich die DataGridView.CurrentRow-Eigenschaft angesehen, die schreibgeschützt ist:

Ruft die Zeile mit der aktuellen Zelle ab.

Aber in den Anmerkungen wird geschrieben:

Um die aktuelle Zeile zu ändern, müssen Sie die Eigenschaft CurrentCell auf eine .__ setzen. Zelle in der gewünschten Zeile.

Auch aus der DataGridView.CurrentCell-Eigenschaft erfahren wir Folgendes:

Wenn Sie den Wert dieser Eigenschaft ändern, wird das SelectionChanged-Ereignis tritt vor dem CurrentCellChanged-Ereignis auf. Ein beliebiges SelectionChanged-Ereignis Handler, die zu diesem Zeitpunkt auf die CurrentCell-Eigenschaft zugreifen, erhalten ihr vorheriger Wert.

Daher ist es nicht erforderlich, dass Sie tatsächlich die Variable currentRow auswählen, da sie beim Einstellen des Werts CurrentCell ausgewählt wird (es sei denn, Sie haben Code, der innerhalb des aktuellen Bereichs zwischen den Ereignissen SelectionChanged und CurrentCellChanged ausgeführt werden muss). Versuche dies:

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

Ich denke, Sie möchten die Reihe hervorheben. Bitte versuchen Sie den folgenden Code, ich denke es könnte helfen:

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

Versuchen Sie Folgendes, um die aktuelle Zeile zu ändern. Da das OP ein wenig unklar ist, welche Zeile die neue Zeile sein soll, zeigt mein Beispiel einfach das Verschieben von der aktuellen Zeile zur vorherigen Zeile (wenn es eine vorherige Zeile gibt). Die erste Codezeile ist optional. Sie können auch col auf 0 (oder eine andere Spalte) setzen, um eine feste Spalte zu verwenden, wenn Sie FullRowSelect nicht verwenden möchten.

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