Laden...

DataGridView Eingabe prüfen

Erstellt von RoyalRoy vor 4 Jahren Letzter Beitrag vor 4 Jahren 1.618 Views
R
RoyalRoy Themenstarter:in
24 Beiträge seit 2019
vor 4 Jahren
DataGridView Eingabe prüfen

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

16.828 Beiträge seit 2008
vor 4 Jahren

Die Args von CellValitating reichen Dir nicht aus?

R
RoyalRoy Themenstarter:in
24 Beiträge seit 2019
vor 4 Jahren

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.

87 Beiträge seit 2016
vor 4 Jahren

Hallo,

die DataGridViewCellValidatingEventArgs haben doch die Eigenschaft FormattedValue.
Diese Eigenschaft hilft dir auch nicht weiter?

glandorf

R
RoyalRoy Themenstarter:in
24 Beiträge seit 2019
vor 4 Jahren

Ahhh ... den hab ich nicht berücksichtigt.
Dann passt es
Super Danke euch. 👍

R
RoyalRoy Themenstarter:in
24 Beiträge seit 2019
vor 4 Jahren

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.

1.029 Beiträge seit 2010
vor 4 Jahren

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

R
RoyalRoy Themenstarter:in
24 Beiträge seit 2019
vor 4 Jahren

Das cancel lässt mich nicht mehr aus der Zelle raus in eine andere Zelle Springen.
Es bricht also jede nachfolgende Aktivität ab.