Wie setzen Sie den Fokus auf bestimmten Zelle in datagridview nach einem Fehler bei der überprüfung?
Freunde, ich habe mir windows-Anwendung, wo ich mit einem datagridview für die Anzeige von bestehenden Daten hinzufügen/Bearbeiten von Daten. Das datagridview hat eine Funktion, die auf Tab/Enter-Taste drücken, wird der Fokus weiter zur nächsten Zelle. Wenn es die Letzte Spalte in eine Zeile, dann wird der Fokus an die erste Spalte der nächsten Zeile. Nun nach der Eingabe von Daten für eine Zelle und drücken der Tab-Taste/Enter-Taste, wenn es zu einer Fehlermeldung bei falsch eingegebenen Daten (wie numerische Wert ist nicht korrekt formatiert sind, oder der Wert ist kleiner als null etc. etc.), nach dem anzeigen der Fehlermeldung in einer message-box, der Schwerpunkt bewegt sich zur nächsten Zelle. Gibt es eine Möglichkeit, dass wenn es eine Fehlermeldung für eine Zelle, dann wird der Fokus so eingestellt werden, dass Fehler erzeugende Zelle nur, es werde sich nicht bewegen, um die nächste Zelle? In dgView_CellEndEdit Veranstaltung, die ich habe versucht, markieren Sie die Zelle mit dem code:
dgView.Rows[e.RowIndex].Cells["ColumnName"].Value = "0.00";
dgView.Select();
dgView.CurrentCell.Selected = true;
Aber es funktioniert nicht. In dgView_SelectionChanged Veranstaltung, die ich verwendet habe:
dgView.CurrentCell = dgView[RequiredColumnIndex, RequiredRowIndex];
dgView.BeginEdit(true);
Dies ist auch keine Hilfe. Bitte helft mir das problem zu lösen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube, Sie sollten die
CellValidating
Veranstaltung für Ihre Prüfungen und Validierung. Im Falle einige der Prüfungen fehl, Sie konnte prompt die Fehlermeldung und sete.Behandelte.Cancel= false
. Dadurch wird der Fokus in der aktuellen Fehler Zelle, bis Sie die erforderlichen Korrekturen.e.Cancel
für die Fehler, die ich denke, Sie müssen commit der Wert der Zellegrid.CommitEdit(DataGridViewDataErrorContexts.Commit)
so etwas in der Art und legen Sie dann die aktuelle ZelledataGridView1.Rows[currRow].Selected = true;
int currRow = 0; currRow = dataGridView1.CurrentRow.Index;