Hallo nabil
Datagridview navigieren ist einwenig mühsam, da sehr viele Events dazwischen schiessen können.
Wenn du die Zelle aktivieren willst, musst du sie noch selektieren nach dem aktiv setzen.
Aber ich glaub nicht, dass der nachstehende code zu deinem gewünschten ergebnis führt, weil er nur funktioniert, wenn du die zeile verlässt (mit Enter oder mit der pfeiltaste). Wenn du mit TAB oder mit der Pfeiltaste auf der gleichen zeile aus der zelle navigierst, bleibt er auf der nächsten zelle (z.B. die der spalte 2) stehen. Hinzu kommt, dass wenn du mit Enter oder mit der Pfeiltaste nach unten navigierst (nach der Eingabe eines wertes in der spalte 0), die zelle in der neuen zeile gewählt wird…
Das Problem liegt an der Reihenfolge der aufgerufenen Events des Datagridviews. CellEndEdit wird z.B. vor RowLeave aufgerufen, und somit hast du dann den komischen effekt, dass er die zelle in der neuen linie auswählt.
evtl. gibt es noch bessere events für den code…probier mal, sonst kommst wieder.
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 0)
{
if (dataGridView1[0, e.RowIndex].FormattedValue.ToString() != „“)
{
dataGridView1.CurrentCell = dataGridView1[3, e.RowIndex];
dataGridView1[3, e.RowIndex].Selected = true;
}
}
}