Autor |
Beitrag |
hoxplus
Hält's aus hier
Beiträge: 9
|
Verfasst: Mo 14.07.14 19:37
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
      
Beiträge: 4708
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: Mo 14.07.14 19:43
Funktioniert hier wie erwartet? Wie lang ist deine iXYvariable VAriable? Zufällig 3 Zeichen?
|
|
hoxplus 
Hält's aus hier
Beiträge: 9
|
Verfasst: Mo 14.07.14 19:48
Ist immer unterschiedlich. Meistens aber länger als 3 Zeichen
|
|
Ralf Jansen
      
Beiträge: 4708
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: 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 
Hält's aus hier
Beiträge: 9
|
Verfasst: 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.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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)); } |
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Für diesen Beitrag haben gedankt: hoxplus
|
|
Ralf Jansen
      
Beiträge: 4708
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: 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

Einloggen, um Attachments anzusehen!
Für diesen Beitrag haben gedankt: hoxplus
|
|
hoxplus 
Hält's aus hier
Beiträge: 9
|
Verfasst: 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
      
Beiträge: 4708
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: 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.
Für diesen Beitrag haben gedankt: hoxplus
|
|
hoxplus 
Hält's aus hier
Beiträge: 9
|
Verfasst: Mo 14.07.14 20:56
DANKE !!!! Es funktioniert!
Hätte man sich aber auch denken können
Danke an alle
|
|