lukasS
Erfahrenes Mitglied
Hallo,
ich möchte in meinem DGV eine Spalte mit einem eindeutigen Schlüssel haben. Die DGV besitzt keine DataSource, die Daten werden direkt in das DGV hineingeschrieben.
So bald der Benutzer nun einen Wert in dieser Schlüssel-Spalte ändert bzw. eine neue Zeile mit dem Eintrag in die Spalte erstellt, überprüfe ich beim CellValueChanged ob der Wert schon vorhanden ist und kann den dann abfangen.
Das Problem ist aber, wenn der Benutzer einen schon vorhandenen Eintrag gemacht hat und dann z. B. ENTER drückt, hüpft die Selektion in die nächste Zeile. Ich möchte aber, dass sich die Zelle weiter hin im Editiermodus befindet. Das CellValueChanged wird ja vor der neuen Selektion ausgeführt.
Jetzt weiß ich leider nicht, wie ich das Problem am besten lösen sollte. Hat vielleicht jemand eine Idee oder einen Tipp? Muss ich jetzt noch die Tasten abfangen?
Hier der Code-Schnipsel aus dem CellValueChanged-Ereignis.
Danke schon mal!
Gruß
Lukas
ich möchte in meinem DGV eine Spalte mit einem eindeutigen Schlüssel haben. Die DGV besitzt keine DataSource, die Daten werden direkt in das DGV hineingeschrieben.
So bald der Benutzer nun einen Wert in dieser Schlüssel-Spalte ändert bzw. eine neue Zeile mit dem Eintrag in die Spalte erstellt, überprüfe ich beim CellValueChanged ob der Wert schon vorhanden ist und kann den dann abfangen.
Das Problem ist aber, wenn der Benutzer einen schon vorhandenen Eintrag gemacht hat und dann z. B. ENTER drückt, hüpft die Selektion in die nächste Zeile. Ich möchte aber, dass sich die Zelle weiter hin im Editiermodus befindet. Das CellValueChanged wird ja vor der neuen Selektion ausgeführt.
Jetzt weiß ich leider nicht, wie ich das Problem am besten lösen sollte. Hat vielleicht jemand eine Idee oder einen Tipp? Muss ich jetzt noch die Tasten abfangen?

Hier der Code-Schnipsel aus dem CellValueChanged-Ereignis.
Code:
if (e.ColumnIndex == 0)//Schlüsselspalte
{
string sVal = (string)dataGridView1.Rows[e.RowIndex].Cells[0].Value;
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
if ((string)dataGridView1.Rows[i].Cells[0].Value == sVal)
{
MessageBox.Show(@"Falscher Eintrag");
//Die nächsten Zeilen sind hier nutzlos
dataGridView1.CurrentCell = dataGridView1.Rows[e.RowIndex].Cells[0];
dataGridView1.Rows[e.RowIndex].Cells[0].Selected = true;
dataGridView1.BeginEdit(false);
break;
}
}
}
Danke schon mal!
Gruß
Lukas