Laden...

DataGridView und Hexadezimaldarstellung einzelner Zellen

Erstellt von Christel vor 10 Jahren Letzter Beitrag vor 10 Jahren 1.542 Views
C
Christel Themenstarter:in
448 Beiträge seit 2007
vor 10 Jahren
DataGridView und Hexadezimaldarstellung einzelner Zellen

Hallo,
ich habe ein DataGridView, dessen Zellen unterschiedliche Datentypen (String, numerisch) haben. Die numerischen Werte in manchen Zellen möchte ich

  1. hexadezimal anzeigen
  2. nach Benutzereingabe hexadezimal auslesen

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.

T
156 Beiträge seit 2012
vor 10 Jahren

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

C
Christel Themenstarter:in
448 Beiträge seit 2007
vor 10 Jahren

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.

C
Christel Themenstarter:in
448 Beiträge seit 2007
vor 10 Jahren

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.

C
2.121 Beiträge seit 2010
vor 10 Jahren

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.

C
Christel Themenstarter:in
448 Beiträge seit 2007
vor 10 Jahren

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.