Entwickler-Ecke
WinForms - Tabs mit format string geht nicht
hoxplus - Mo 14.07.14 19:37
Titel: Tabs mit format string geht nicht
Hey Leute,
ich habe folgendes Problem: Ich möchte einen String mit tabs ausgeben.
Wenn ich folgendes mache:
C#-Quelltext
1:
| string xy = "Hallo\tWelt"; |
und das dann ausgebe funktioniert es wunderbar.
Mache ich aber folgendes:
C#-Quelltext
1:
| string xy = String.Format("{0} Hallo\tWelt", iXYvariable); |
und das dann ausgebe funktioniert es nicht. Das ist sehr ärgerlich.
Ich hoffe ihr könnt mir helfen und danke schonmal für eure Bemühungen
Moderiert von
Christian S.: Code- durch C#-Tags ersetzt
Ralf Jansen - Mo 14.07.14 19:43
Funktioniert hier wie erwartet? Wie lang ist deine iXYvariable VAriable? Zufällig 3 Zeichen?
hoxplus - Mo 14.07.14 19:48
Ist immer unterschiedlich. Meistens aber länger als 3 Zeichen
Ralf Jansen - Mo 14.07.14 19:51
Dann sag mal wo du es ausgibst.
In einem Winforms Control kann ich dein Problem nicht nachstellen. Funktioniert wunderbar.
hoxplus - Mo 14.07.14 20:04
also ich gebe den string mit System.Drawing.Graphics.DrawString direkt in eine Form aus.
Und ich habe auch noch vergessen zu erwähnen, dass ich mehrere strings mit dem stringbuilder
benuzte. Also so:
C#-Quelltext
1: 2: 3: 4:
| string xy = String.Format("{0} Hallo\tWelt", wiegehabtvariable); string xyz = "irgendwas"; sb.AppendLine(xy); sb.AppendLine(xy); |
die ausgabe funktioniert ja auch nur die tabs fehlen
PS: sry ich hab wohl am anfang zu wenig infos zu der situation gegeben
Moderiert von
Christian S.: Code- durch C#-Tags ersetzt
Christian S. - Mo 14.07.14 20:12
Ich bekomme das Problem auch nicht reproduziert. Folgender Quelltext tut genau das, was man erwarten würde:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| private void button1_Click(object sender, EventArgs e) { var iXYvariable = 5; string xy = String.Format("{0} Hallo\tWelt", iXYvariable); string xyz = "irgendwas";
var sb = new StringBuilder(); sb.AppendLine(xy); sb.AppendLine(xyz);
using (var gr = this.CreateGraphics()) gr.DrawString(sb.ToString(), new Font("Arial", 11), Brushes.Black, new PointF(20, 20)); } |
Ralf Jansen - Mo 14.07.14 20:12
Wie nähern uns ;)
Kann ich immer noch nicht nachvollziehen.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| private void Form1_Paint(object sender, PaintEventArgs e) { StringBuilder x = new StringBuilder(); x.AppendLine("Hallo\tWelt"). AppendLine(String.Format("{0} Hallo\tWelt", 1)). AppendLine(String.Format("{0} Hallo\tWelt", 12)). AppendLine(String.Format("{0} Hallo\tWelt", 123)). AppendLine(String.Format("{0} Hallo\tWelt", 1234));
e.Graphics.DrawString(x.ToString(), this.Font, new SolidBrush(Color.Black), 10, 10); } |
Ausgabe
hoxplus - Mo 14.07.14 20:37
Also ich habe jetzt einmal den von euch geposteten Code in einem neuen
Projekt getestet und bei mir funktioniert er nun auch. Leider hilft mir das
bei meinem Problem mit dem aktuellen Projekt nicht weiter. Darum poste ich
einfach mal den Codeausschnitt wie ich ihn verwende:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| System.Drawing.Graphics formGraphics = this.CreateGraphics(); System.Drawing.Font drawFont = new System.Drawing.Font("TimesNewRoman", 18); System.Drawing.SolidBrush drawBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Black); System.Drawing.StringFormat drawFormat = new System.Drawing.StringFormat(); drawFormat.Alignment = StringAlignment.Center; drawFormat.LineAlignment = StringAlignment.Center;
string buffer; System.Text.StringBuilder sb = new System.Text.StringBuilder(); for (int i = 0; i < myClass.iPunkte.Count(); i++) { buffer = String.Format("{0}.Platz: {1}\t{2} Punkte", i + 1, myClass.Name[i], myClass.iPunkte[i].ToString()); sb.AppendLine(buffer); } formGraphics.DrawString(sb.ToString(), drawFont, drawBrush, Screen.AllScreens[0].WorkingArea, drawFormat); sb.Clear(); drawFont.Dispose(); drawBrush.Dispose(); formGraphics.Dispose(); |
Also ich hoffe ihr könnt damit irgendwas anfangen und wie gesagt der Text wird ja auch ausgegeben nur verhält es sich als sei das \t gar nicht da
Ralf Jansen - Mo 14.07.14 20:45
Das mit dem Alignment macht irgendwie keinen Sinn. Entweder zentriert ODER an Tab Grenzen ausgerichtet.
Wenn du an Tabs ausrichten willst lass also das StringFormat weg.
hoxplus - Mo 14.07.14 20:56
DANKE !!!! Es funktioniert!
Hätte man sich aber auch denken können :autsch:
Danke an alle
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!