Valueänderung DatagridviewCell innerhalb CellValidating sichtbar machen
-
Hallo, ich habe ein DataGridView in dem Messwerte eingetragen werden sollen.
In einer Zeile hat der Anwender die Möglichkeit Werte zur Korrektur einzutragen,
daher verwende ich zur Validierung der Daten das Event CellValidating. Wenn der Anwender sinnfreie Informationen einträgt soll in die Zelle automatisch 0 geschrieben werden.Jedoch wird der Wert erst eingetragen bzw. sichtbar wenn die Zelle die noch selektiert ist verlassen wird und erneut selektiert wird. Kann man dies umgehen bzw. muss ich beim Eintragen aus dem Event heraus etwas beachten?
private: System::Void dataGridView_MeasureMentValues_CellValidating(Object^ sender, DataGridViewCellValidatingEventArgs^ e) { double val; if(!Double::TryParse(e->FormattedValue->ToString(), val)) { //Keine numerische Eingabe DataGridViewTextBoxCell^ dgvtbc = (DataGridViewTextBoxCell^)this->dataGridView_MeasureMentValues->Rows[e->RowIndex]->Cells[e->ColumnIndex]; dgvtbc->Value = "0"; } }
Mfg Bernd
-
Nimm doch CellLeave
-
Das funktioniert leider ebenso wenig, das Event wird ja ausgelöst, sobald die Zelle verlassen wird. Danach klick ich wieder hinein in die Zelle und erst wenn ich dann wieder raus gehe wird der Wert angezeigt.
Ich glaub das hat irgendwas mit den Events zu tun aber ich weis leider nicht was da falsch ist...
-
Ich habe nach ewiger Suche eine Antwort im folgendem Forum gefunden:
Die Lösung war, dass ich nach der Zuweisung die Methode RefreshEdit aufrufen musste!
private: System::Void dataGridView_MeasureMentValues_CellValidating(Object^ sender, DataGridViewCellValidatingEventArgs^ e) { double val; if(!Double::TryParse(e->FormattedValue->ToString(), val)) { //Keine numerische Eingabe DataGridViewTextBoxCell^ dgvtbc = (DataGridViewTextBoxCell^)this->dataGridView_MeasureMentValues->Rows[e->RowIndex]->Cells[e->ColumnIndex]; dgvtbc->Value = "0"; this->dataGridView_MeasureMentValues->RefreshEdit(); } }