Autor Beitrag
Zonder
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mo 15.02.10 14:54 
Hallo zusammen, bin neu hier und hab gleich mal eine Frage.

Mein Programm soll eine Textdatei ausdrucken, die Textdatei sieht zb. so aus:

Zeitstempel________X___________Y______________Z
13:23:21__________13__________17_____________37
13:23:23__________4367________818____________0

Das was bei mir ausgedruckt wird, sieht jedoch so aus

Zeitstempel X Y Z
13:23:21 13 17 37
13:23:23 4367 818 0


Der Text in der Textbox in die ich die Textdatei reinlade, sieht genaus aus wie der Text in der Textdatei (selbe Formatierung und \t wird angenommen) nur beim Drucken wird alles verschoben.

Brauche eure Hilfe!



edit: Oh man ich habe bemerkt das hier die Tabulatoren auch nicht angezeigt werden, deswegen dieses underline
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 15.02.10 15:22 
Hallo und :welcome:!

Wie sieht denn überhaupt der Code zum Drucken aus?

Grüße
Christian

P.S.:
ausblenden Quelltext
1:
Mit  Code  Tags  geht's!					

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Zonder Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mo 15.02.10 15:34 
Hab den Beispielcode von msdn.microsoft.com/d...aa287530(VS.71).aspx verwendet und auch das Beispielprogramm vom Buch
"Visual C# 2008 Das umfassende Handbuch"

Ich weiss zwar nicht ob man es darf aber ich poste hier mal diesen Beispielcode von microsoft

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
System.IO.StreamReader fileToPrint;
System.Drawing.Font printFont;
private void printButton_Click(object sender, EventArgs e)
{
   string printPath = System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
   fileToPrint = new System.IO.StreamReader(printPath + @"\myFile.txt");
   printFont = new System.Drawing.Font("Arial"10);
   printDocument1.Print();
   fileToPrint.Close();
}

private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
   float yPos = 0f;
   int count = 0;
   float leftMargin = e.MarginBounds.Left;
   float topMargin = e.MarginBounds.Top;
   string line = null;
   float linesPerPage = e.MarginBounds.Height/printFont.GetHeight(e.Graphics);
   while (count < linesPerPage)
   {
      line = fileToPrint.ReadLine();
      if (line == null)
      {
         break;
      }
      yPos = topMargin + count * printFont.GetHeight(e.Graphics);
      e.Graphics.DrawString(line, printFont, Brushes.Black, leftMargin, yPos, new StringFormat());
      count++;
   }
   if (line != null)
   {
      e.HasMorePages = true;
   }
}



Hab mir jetzt überlegt beim erstellen der Textdatei nicht den Tabulator zu verwenden sondern durch eine Funktion ausrechnen wieviele Leerstellen ich von Variable zu Variable einfügen muss.
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Mo 15.02.10 15:40 
Das ist Beispielcode von Microsoft??? Seis drum...

Mich würde auch eher interessieren wie du druckst. Das Beispiel könnte ich ja selbst bei MSDN nachschauen.

Gruß Daniel
Zonder Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mo 15.02.10 15:46 
Ich drucke in dem ich auf der "Form" auf dem Button "printButton" Clicke, danach wird die Textdatei (myFile.txt) automatisch gedruckt ohne Abfragen von welchem Drucker, wie viele Seiten, welche Seiten gedruckt werden sollen. Dafür wird der Standartdrucker der von Windows ausgewählt ist verwendet.

Das Komische dabei ist, das die String variable die dan an den Drucker übergeben wird auch die Tabulator Zeichen (\t) enthällt, diese jedoch nicht berücksichtigt werden.

Es gibt ja noch die Funktion vor dem Ausdruck sich die Seitenansicht anzeigen zu lassen und bei dieser werden die Tabulatoren auch schon nicht mehr berücksichtigt.
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mo 15.02.10 16:19 
Hallo,

das Problem ist in der Tat schwieriger. Ich habe dazu in der SDK-Doku/MSDN/Hilfe einen Artikel Gewusst wie: Festlegen von Tabstopps in gezeichnetem Text gefunden. Dabei muss ein StringFormat (ein spezieller Datentyp!) mit SetTabStops versehen werden und bei DrawString zusätzlich angegeben werden.

Gruß Jürgen
Zonder Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mo 15.02.10 17:16 
Danke JüTho das klärt mich jetzt etwas auf