M-Krischker Geschrieben 19. Juli 2010 Geschrieben 19. Juli 2010 Hallo zusammen, die Frage is mir bisschen peinlich, da das meines erachtens noch ein Kinderspiel sein sollte. Jedenfalls versuche ich den Inhalt einer Textbox zu drucken. Hab schon alles mögliche versucht, auch das geliebte google kann mir nicht helfen. Ich und mein Ausbilder verzweifeln an dieser vermeitlich symplen Aufgebe. Ich hoffe Ihr könnt mir helfen. Danke Zitieren
Hardcorecoder Geschrieben 19. Juli 2010 Geschrieben 19. Juli 2010 kannst es so machen: public void PrintText(string txt) { File.AppendAllText("test.txt",txt,Encoding.ASCII); Process process = new Process(); try { process.StartInfo.UseShellExecute = true; process.StartInfo.CreateNoWindow = true; process.StartInfo.FileName = "test.txt"; process.StartInfo.Verb = "Print"; process.Start(); process.EnableRaisingEvents = true; process.Close(); } catch (Exception ex) { Console.WriteLine(ex.StackTrace); } } er nimmt den Drucker den du als standarddrucker gewählt hast...sollte eig funktionieren ..kann aber auch sein das bei : process.StartInfo.FileName = "test.txt"; nur test.txt nicht reicht sondern der komplette pfad her muss..habs aus einem programm von mir kopiert und hier bissl angepasst Zitieren
realgun Geschrieben 19. Juli 2010 Geschrieben 19. Juli 2010 Jedenfalls versuche ich den Inhalt einer Textbox zu drucken. Hab schon alles mögliche versucht, auch das geliebte google kann mir nicht helfen. Ich und mein Ausbilder verzweifeln an dieser vermeitlich symplen Aufgebe. Ich weiß zwar nicht mit was Du google gefüttert hast, aber die Suche nach "drucken c#" hat als 2. Treffer diesen Link ausgespuckt Zitieren
Hardcorecoder Geschrieben 20. Juli 2010 Geschrieben 20. Juli 2010 Ich weiß zwar nicht mit was Du google gefüttert hast, aber die Suche nach "drucken c#" hat als 2. Treffer diesen Link ausgespuckt unter drucken versteh ich das so mit papier und drucker und ******e teuer wenn tinte alle und das was der da in deinem beispiel macht ist nichts weiter als mit den graphics irgendwas irgendwo hinzuzeichnen... Zitieren
M-Krischker Geschrieben 20. Juli 2010 Autor Geschrieben 20. Juli 2010 Vielen Dank für eure Hilfe, leider bekomme ich das immer noch nicht hin. Nur so am Rande, ich bin Umschüler im 1. Jahr und erst vor 2Wochen Anwender geworden. Ich verstehe zwar den Quelltext wenn er ausgeführt wird, leider bekomm ichs da noch selten hingebogen. Entweder fehlt mir eine using-Direktive, oder ich bekomme die Textbox nicht eingebunden (bzw. meist beides) Zitieren
Klotzkopp Geschrieben 20. Juli 2010 Geschrieben 20. Juli 2010 unter drucken versteh ich das so mit papier und drucker und ******e teuer wenn tinte alleTja, das alles versteckt das Betriebssystem aber vor dir, damit du dein Programm nicht an zehntausende Kombinationen von Druckermodell und Anschlussart anpassen musst. Außer natürlich, man ist "Hardcodecoder" und macht so etwas gern und das was der da in deinem beispiel macht ist nichts weiter als mit den graphics irgendwas irgendwo hinzuzeichnen...Das ist genau das, was zum Drucken nötig ist. Zitieren
Klotzkopp Geschrieben 20. Juli 2010 Geschrieben 20. Juli 2010 leider bekomme ich das immer noch nicht hin.Das ist keine ausreichende Fehlerbeschreibung. Zeig den relevanten Code und die Fehlermeldung, falls du eine bekommst. Falls nicht, beschreibe, wie sich das beobachtete vom gewünschten Verhalten unterscheidet. Zitieren
Hardcorecoder Geschrieben 20. Juli 2010 Geschrieben 20. Juli 2010 aber in seinem beispiel wird ja nur gezeichnet, für mich ist nicht ersichtlich daswirklich nen druckauftrag gestartet wird Zitieren
Klotzkopp Geschrieben 20. Juli 2010 Geschrieben 20. Juli 2010 für mich ist nicht ersichtlich daswirklich nen druckauftrag gestartet wird Dann solltest du dir die Dokumentation der beteiligten Klassen ansehen, angefangen bei PrintDocument. Zitieren
M-Krischker Geschrieben 20. Juli 2010 Autor Geschrieben 20. Juli 2010 Ich hab jetz was gefunden wo ich mich langsam einlesen kann. Das Problem bei einem Testdruck einer leeren Seite PrintDocument printDoc = new PrintDocument(); printDoc.Print(); ist wieder die Fehlermeldung Der Typ- oder Namespacename "PrintDocument" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?) Zitieren
Klotzkopp Geschrieben 20. Juli 2010 Geschrieben 20. Juli 2010 Fehlt eine Using-Direktive oder ein Assemblyverweis?Und? Fehlt eine Using-Direktive? Hast du using System.Drawing.Printing;? Zitieren
M-Krischker Geschrieben 20. Juli 2010 Autor Geschrieben 20. Juli 2010 Ok nun geht es. Ich glaub ich darf noch so einiges lernen bevor ich sowas mal alleine coden kann. 3 zeilen und ich hab solche Probleme... Noch mals 1000 Dank, das mit der Textbox bekomm ich hoffentlich alleie hin. Zitieren
Gateway_man Geschrieben 20. Juli 2010 Geschrieben 20. Juli 2010 unter drucken versteh ich das so mit papier und drucker und ******e teuer wenn tinte alle und das was der da in deinem beispiel macht ist nichts weiter als mit den graphics irgendwas irgendwo hinzuzeichnen... Du scheint dich scheinbar noch nicht alzusehr mit dem printen im .NET Framework auseinander gesetzt zu haben. Die Lösung, welche du dem TE gepostet hast ist nicht die beste. Warum? Du selbst kümmerst dich nicht um das printen und kannst somit nur den Content übergeben, jedoch nicht dessen Formatierung oder Positionierung beeinflussen. Wenn man aber im .NET selbst einen Druckauftrag erstellen möchte, nutzt man am besten das bereits erwähnte PrintDocument. Verglichen deiner Lösung ist es jedoch bei weitem nicht so einfach, da man den Inhalt der zu drucken Seite selbst Positionieren und Zeichnen lassen muss. (Das geschieht mit dem ebenfalls bereits erwähnten System.Drawing Namespace). Hier ein kleines Beispiel aus der MSDN: using System; using System.IO; using System.Drawing; using System.Drawing.Printing; using System.Windows.Forms; public class PrintingExample { private Font printFont; private StreamReader streamToPrint; static string filePath; public PrintingExample() { Printing(); } // The PrintPage event is raised for each page to be printed. private void pd_PrintPage(object sender, PrintPageEventArgs ev) { float linesPerPage = 0; float yPos = 0; int count = 0; float leftMargin = ev.MarginBounds.Left; float topMargin = ev.MarginBounds.Top; String line=null; // Calculate the number of lines per page. linesPerPage = ev.MarginBounds.Height / printFont.GetHeight(ev.Graphics) ; // Iterate over the file, printing each line. while (count < linesPerPage && ((line=streamToPrint.ReadLine()) != null)) { yPos = topMargin + (count * printFont.GetHeight(ev.Graphics)); ev.Graphics.DrawString (line, printFont, Brushes.Black, leftMargin, yPos, new StringFormat()); count++; } // If more lines exist, print another page. if (line != null) ev.HasMorePages = true; else ev.HasMorePages = false; } // Print the file. public void Printing() { try { streamToPrint = new StreamReader (filePath); try { printFont = new Font("Arial", 10); PrintDocument pd = new PrintDocument(); pd.PrintPage += new PrintPageEventHandler(pd_PrintPage); // Print the document. [B]pd.Print();[/B] //Wie du siehst wird hier der Printbefehl ausgeführt. } finally { streamToPrint.Close() ; } } catch(Exception ex) { MessageBox.Show(ex.Message); } } // This is the main entry point for the application. public static void Main(string[] args) { string sampleName = Environment.GetCommandLineArgs()[0]; if(args.Length != 1) { Console.WriteLine("Usage: " + sampleName +" <file path>"); return; } filePath = args[0]; new PrintingExample(); } } lg Gateway Zitieren
Hardcorecoder Geschrieben 20. Juli 2010 Geschrieben 20. Juli 2010 das ich mcih in .net mit dem printen noch nicht so aus kenne ist richtig. Weshalb mir auch das PrintDoc spanisch vorkam als ich das im zusammenhang mit graphics sah. Das mein beispiel nicht sonderlich perfekt ist, ist mir klar, aber dennoch für sein beispiel ausreichend, da er ja bloß den inhalt der textbox drucken will. Sobald er jedoch formatierungen vornehmen will ists schonwieder ungeignet ^^.. halt quick and dirty lösung Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.