Hallo,
ich habe ein DataGridView, dessen Zellen unterschiedliche Datentypen (String, numerisch) haben. Die numerischen Werte in manchen Zellen möchte ich
Gibt es hier Möglichkeiten, außer die Zellen als String zu behandeln und die Werte selbst im Code zu konvertieren?
Danke, Christel
Es ist schlimm, eine Ausnahme zu sein, aber noch schlimmer, keine zu sein.
Hallo Christel,
die Anzeige der betroffenen Zeilen möchtest Du sowohl bei der Anzeige als auch nach Veränderungen in HexaDezimal umwandeln. Erhälst Du die Daten bereits HexaDezimal? Falls nicht empfiehlt sich hier wohl eher eine foreach-Schleife über alle Zeilen der DGV.
Die geänderten Daten kannst Du über das CellValueChanged-Event abhandeln.
Viele Grüße,
telfa
Ja, der Benutzer soll in der DGV Zelle Hex-Zahlen eingeben, Ziffern zwischen 0...F. Gespeichert werden sollen sie gemäß des DataTyes der Zelle als UInt32-Werte. Bei der Anzeige sollen diese UInt32-Werte wieder im Hex-Format erscheinen.
Die Auswertung erfolgt bereits über das CellValueChanged-Event. Ich weiß auch bei jeder einzelnen Zelle, ob dort das Format String, Boolean oder numerisch vorliegt. Bei numerischen Werten weiß ich, ob dezimal oder hex.
Es wird mir wohl nichts anderes bleiben, als die Zelle intern als String zu behandeln und den Eingabewert über TryPrse mit dem passenden NumberStyle auszulesen und bei der Anzeige über "X08" zu formatieren, evtl. über das CellFormat-Event.
Ich hatte nur gehofft, dass das DGV bereits spezielle Cell-Typen anbietet, die eine solche Formatierung unterstützen. Möglicherweise über Filter-Properties, die bereits bei der Eingabe die Ziffern 0...F prüfen.
Danke, Christel
Es ist schlimm, eine Ausnahme zu sein, aber noch schlimmer, keine zu sein.
Kann hier möglicherweise die Umwandlung der Zelle in DataGridViewTextBoxCell helfen? Diese hat eine Property DataGridViewTextBoxCell.Style.Format. Kann man diese dann evtl. auf "X08" setzen?
Hat da jemand Erfahrung mit?
Schönen Abend, Christel
Es ist schlimm, eine Ausnahme zu sein, aber noch schlimmer, keine zu sein.
Es gibt ein Event CellFormatting und eines dessen Name ich nicht auswendig weiß, sollte sich aber finden lassen.
Mit dem ersten kannst du die Anzeige steuern indem du den uint in einen Hex String wandelst. Das wird immer dann aufgerufen wenn das Grid einen Wert darstellen will.
Das zweite Event wird aufgerufen wenn man einen Wert eingibt, mit dem kannst du die Eingabe in das umkonvertieren was tatsächlich gespeichert werden soll.
Danke.
Das CellFormatting-Event kenne ich. Das bietet sich zur Hex-Darstellung an. Den anderen Fall könnte man evtl. über das CellParsing- oder CellValidating-Event abdecken. Ich werde es probieren.
Gruß, Christel
Es ist schlimm, eine Ausnahme zu sein, aber noch schlimmer, keine zu sein.