C# C# PadRight funktioniert nicht wie gedacht

exeto

Lt. Junior Grade
Registriert
Juli 2007
Beiträge
435
Hi,

ich habe eine listBox wo ich mir Informationen aus einer Datenbank anzeigen lasse und zwar:

Datum, Name, Beschreibung

Es werden soviel Einträge untereinander angelegt, wie viel zu meiner Suche gefunden wurden.
Jetzt wollte ich die Informationen geordnet darstellen mit einer kleinen Lücke.
Da das Datum immer das gleiche Format hat funktioniert hier PadRight wie ich es mir vorgestellt habe, zwischen Datum und Name.
Da es aber immer unterschiedliche Längen gibt bei Namen, ist zwischen Name und Beschreibung alles versetzt.

Ich hab PadRight so verstanden, dass es mir bis zu einer bestimmten Position den String auffüllt.
Ich hab einen Namen mit 10 Buchstaben, PadRight(50) sollte mir jetzt zu den 10 Buchstaben noch 40 Leerzeichen machen.
Dann hab ich einen Namen mit 20 Buchstaben, PadRight(50) sollte mir jetzt zu den 20 Buchstaben noch 30 Leerzeichen machen. Oder habe ich die Methode falsch verstanden?

Code:
 foreach (Info I in Infos)
                        {
                            listBoxInfos.Items.Add(I.Datum.PadRight(20) + I.Name.PadRight(50) + I.Beschreibung.PadRight(100));
                        }
 
Wie sieht denn die Ausgabe aus? Erkennst Du Leerzeichen? Benutzt Du eventuell eine proportionale Schriftart?
 
Die Antwort ist ganz einfach. Ich zeige es an einem Beispiel:
Dieser Satz hat 27 Zeichen.
Das mag hier auch stimmen!!

Beide Sätze haben 27 Zeichen, sind aber von der Länge her nicht gleich lang. Was einfach daran liegt, dass jedes einzelne Zeichen eine unterschiedliche Breite hat.

Wenn das ganze in WPF ist, einfach ein Datatemplate hinzufügen und der ListBox die Klasse übergeben :).
Code:
<DataTemplate DataType="{x:Type local:KlassenName}">
   <StackPanel Orientation="Horizontal">
      <TextBlock Text="{Binding Datum}" Width="50" /> 
<!-- ist nur ein Beispiel, man könnte die Breite auch anders festlegen oder statt einem StackPanel ein GridView verwenden-->
      ...
 </ ...>
</...>

Keine Garantie auf Richtigkeit, hab es gerade einfach schnell runtergetippt und nicht getestet.

Weiterhin Viel Erfolg :)
 
Zuletzt bearbeitet:
Hi,

danke schon einmal für eure Hilfe,
Es ist nicht in WPF und es liegt wie hier schon gesagt an den Zeichen die eine unterschiedliche Breite haben.
http://de.wikipedia.org/wiki/Nichtproportionale_Schriftart
Als Lösung habe ich jetzt erst einmal die Schriftart/Font Courier genommen und damit klappt es.
 
Zuletzt bearbeitet:
Zurück
Oben