Ich habe diese Fragen , aber beide beinhalten Methoden, die nicht im CellStyle Format-Wert verfügbar sind. Ich möchte nur die Stunden und Minuten zeigen (16:05); nicht die Sekunden (16:05:13). Ich habe versucht, den Sekundenwert auf Null zu bringen, aber immer noch etwas wie 16:05:00. Es gibt keine Möglichkeit, die Formatierung so zu gestalten, wie ich möchte. Kurz gesagt, ich benutze keine Kludis, die eine Zeichenfolge oder eine DateTime bereitstellen (und nur den Stunden- / Minuten-Teil anzeigen).
Ich habe das gerade selbst entdeckt. Leider ist die Lösung ziemlich kompliziert. Die gute Nachricht ist, dass es funktioniert.
Zunächst benötigen Sie eine ICustomFormatter
Implementierung, die mit TimeSpan
Werten arbeitet. Das .NET-Framework enthält einen solchen nicht standardmäßigen Typ. Ich TimeSpan
umgehen wollte (zB bedeutet "hh" die Gesamtstundenzahl oder nur die Stundenkomponente?) Und der daraus resultierende Ansturm von Unterstützungsproblemen, die entstehen würden, wenn diese Unklarheiten die Entwickler verwirren würden.
Das ist in Ordnung - implementieren Sie einfach Ihre eigenen. Unten ist eine Beispielklasse, die ich schrieb, die im Grunde die gleichen benutzerdefinierten Formatzeichenfolgen wie DateTime
verwendet ( diejenigen, die überhaupt anwendbar waren) *:
Wir sind noch nicht fertig. Mit diesem Typ können Sie der Spalte in DataGridView
einen benutzerdefinierten Formatierer zuweisen, den Sie für die Anzeige Ihrer TimeSpan
-Werte verwenden möchten.
Nehmen wir an, diese Spalte heißt "Time"; dann würdest du das tun:
%Vor%Also jetzt sind Sie eingerichtet, oder?
Nun, aus irgendeinem seltsamen Grund bist du immer noch nicht zu 100% da. Warum benutzerdefinierte Formatierung zu diesem Zeitpunkt nicht eingreifen kann, konnte ich ehrlich gesagt nicht sagen. Aber wir sind fast fertig. Der letzte Schritt besteht darin, das Ereignis CellFormatting
zu behandeln, damit diese neue Funktionalität, die wir geschrieben haben, wirksam wird:
Endlich sind wir fertig. Das Festlegen der DefaultCellStyle.Format
-Eigenschaft von DataGridViewColumn
, die gemäß Ihren benutzerdefinierten Regeln formatiert werden soll, sollte nun wie erwartet funktionieren.
* Also, "h" / "hh" für Stunden, "m" / "mm" für Minuten. usw.
Tags und Links c# winforms datagridview timespan formatting