Benutzer mit den meisten Antworten
Datagrid numerische Spalten...

Frage
-
Hallo,
ich lasse Eingaben in einem Datagridview auf eine nummerische (Double) Spalte zu...
Wenn der Benutzer ausversehen einen Buchstaben in dieser Spalte eintippt und dann versucht das
"Feld" zu verlassen gibts eine Standardfehlerbehandlung vom Datagridview mit iener entsprechenden
Meldung. Ich möchte gerne diese spezielle Variante abfangen und einfach dann auf den Wert 0 parsen
lassen wenn in der numerischen Spalte irgendwelche Werte eingegeben werden, die keine Nummern sind.
Mein Versuch siehst so aus :Private Sub conceptBrowserPositionen_DataError(ByVal sender As Object, ByVal e As DataGridViewDataErrorEventArgs) Handles Me.DataError
Dim flWert As Double
Dim oCol As DataGridViewColumnIf (e.Context = DataGridViewDataErrorContexts.Parsing) Then
oCol = Me.Columns.Item(e.ColumnIndex)
If oCol.ValueType = System.Type.GetType("System.Double") Then
If Double.TryParse(Me.CurrentCell.Value, flWert) Then
Else
Me.CurrentCell.Value = 0
End If
End IfEnd If
Das funktioniert insoweit das keine Meldung mehr erscheint, aber das Feld immernoch nicht
verlassen werden kann und immernoch der Buchstabe dort steht. Welchen Status muss
ich zurückgeben, damit das Feld einfach auf "0" steht und der Benutzer weiterkommt ?Danke,
Mario
Antworten
-
Hallo Mario,
da wäre es sinnvoller bereits das CellParsing Ereignis zu verwenden:
Gruß ElmarPrivate Sub DataGridView1_CellParsing(sender As Object, e As DataGridViewCellParsingEventArgs) _ Handles DataGridView1.CellParsing If e.DesiredType = GetType(Double) Then If String.IsNullOrEmpty(CStr(e.Value)) Then e.Value = 0.0 e.ParsingApplied = True Else Dim value As Double If Double.TryParse(CStr(e.Value), value) Then e.Value = value Else e.Value = 0.0 End If e.ParsingApplied = True End If End If End Sub
- Als Antwort markiert Robert Breitenhofer Freitag, 12. August 2011 08:47
Alle Antworten
-
Hallo Mario,
da wäre es sinnvoller bereits das CellParsing Ereignis zu verwenden:
Gruß ElmarPrivate Sub DataGridView1_CellParsing(sender As Object, e As DataGridViewCellParsingEventArgs) _ Handles DataGridView1.CellParsing If e.DesiredType = GetType(Double) Then If String.IsNullOrEmpty(CStr(e.Value)) Then e.Value = 0.0 e.ParsingApplied = True Else Dim value As Double If Double.TryParse(CStr(e.Value), value) Then e.Value = value Else e.Value = 0.0 End If e.ParsingApplied = True End If End If End Sub
- Als Antwort markiert Robert Breitenhofer Freitag, 12. August 2011 08:47