Hallo C#-Comunity,
ich habe eine Tabelle (DataGridView) bei der ich für die einzelnen Spalten Grenzwerte vorgegeben habe. Nun möchte ich nach der Eingabe eins Wertes prüfen, ob sich der Wert in den besagten Grenzen befindet.
Leider habe ich kein Event gefunden, dass mir beim Aufruf den neuen Inhalt bereitstellt.
--> CellEndEdit
--> CellLeave
--> CellValitating
--> CellVaidated
Wenn diese Events aufgerufen werden, existiert der neue Eintrag noch im DataGridView. (ist noch nicht in DataView Schnellansicht erstellt)
Somit kann ich diesen Wert auch nicht überprüfen, wenn er nicht da ist.
Hab auch schon mit BeginInvoke() gearbeitet. Dies bracht auch nicht den gewünschten Erfolg.
Ich hoffe ihr könnt mir helfen.
MfG RoyalRoy
Die Args von CellValitating reichen Dir nicht aus?
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Die Args von CellValitating reichen Dir nicht aus?
Wenn ich in CellValitating den Inhalt überprüfen will, existiert dieser noch nicht in der Tabelle.
if (e.ColumnIndex == 0)
{
if (Convert.ToDouble(data.Rows[e.RowIndex][e.ColumnIndex].ToString()) < tabLimitMinX || Convert.ToDouble(data.Rows[e.RowIndex][e.ColumnIndex].ToString()) > tabLimitMaxX)
{
data.Rows[e.RowIndex][e.ColumnIndex] = xValues[e.RowIndex];
}
}
else
{
if (Convert.ToDouble(data.Rows[e.RowIndex][e.ColumnIndex].ToString()) < tabLimitMinY[e.RowIndex] || Convert.ToDouble(data.Rows[e.RowIndex][e.ColumnIndex].ToString()) > tabLimitMaxY[e.RowIndex])
{
data.Rows[e.RowIndex][e.ColumnIndex] = yValues[e.RowIndex][e.ColumnIndex];
}
}
Jetzt gibt es aber noch keine neu Zeile im DataGridView. Diese neue Zelle und somit die ganze Zeile wird erst nach dem Event angelegt.
Hallo,
die DataGridViewCellValidatingEventArgs haben doch die Eigenschaft FormattedValue.
Diese Eigenschaft hilft dir auch nicht weiter?
glandorf
Ahhh ... den hab ich nicht berücksichtigt.
Dann passt es
Super Danke euch. 👍
Ein Problem was ich noch habe ist nun, dass ich aber über "FormattedValue" den Wert nur auslesen aber nicht setzen kann. Wenn der Wert nicht in den Grenzen liegt, soll der ursprüngliche Wert, der vorher in der Tabelle stand wieder geladen werden.
Hi,
ich hab's zwar nicht getestet - aber wenn man die Cancel-Eigenschaft auf true setzt sollte im Normalfall genau das passieren.
Was passiert denn bei dir?
LG
Das cancel lässt mich nicht mehr aus der Zelle raus in eine andere Zelle Springen.
Es bricht also jede nachfolgende Aktivität ab.