Entwickler-Ecke
WinForms - PrintDocument bringt immer RPC-Server ist nicht verfügbar
Peter666 - Mo 30.03.09 11:12
Titel: PrintDocument bringt immer RPC-Server ist nicht verfügbar
Hi @all,
ich habe ein Problem mit der PrintDocument Funktion,
wenn ich die Funktion ausführe, bekomme ich immer die Exeption, das der RPC-Server nicht verfügabr ist, obwohl der Dienst gestartet ist.
Der Quellcode sieht bis jetzt so aus:
C#-Quelltext
1: 2: 3: 4: 5: 6:
| PrintDocument printdoc = new PrintDocument(); PrintDialog dia = new PrintDialog(); if (dia.ShowDialog() == DialogResult.OK) { printdoc.Print(); } |
kann mir jemenad helfen?
vielen Dank
Peter
Moderiert von
Kha: C#-Tags hinzugefügt
JüTho - Mo 30.03.09 11:44
Hallo Peter,
kann es sein, dass du noch nicht genügend Informationen lieferst? Ich kann keinen Zusammenhang zwischen deinem PrintDocument-Objekt und einem bestimmten Drucker oder dem RPC-Server erkennen. (Natürlich fehlt auch das PrintPage-Ereignis, aber das dürfte der Kürzung aufs Wesentliche zum Opfer gefallen sein und sollte bei deinem Problem tatsächlich keine Rolle spielen.)
Übrigens bitte ich dich um etwas mehr Genauigkeit:
- PrintDocument ist keine Funktion, sondern zunächst eine Klasse; daraus entsteht bei dir ein Objekt.
- Funktionen und Prozeduren gibt es in C# nicht, alles sind Methoden.
- Quellcode sollte auch als solcher markiert werden.
- PrintDocument bietet doch direkt eine PrintDialog-Methode; warum benutzt du nicht diese?
- Von welchem Typ ist die Exception eigentlich? Das könnte bei der Hilfe nützlich sein.
Gruß Jürgen
Peter666 - Mo 30.03.09 13:31
Hi,
ich bin jetzt schon etwas weiter gekommen, nun bekomme ich immer einen Fehler, wenn ich ein Bitmap an den Drucker sende. Der Fehler lautet:2-Argument: kann nicht von "System.EventArgs" in "System.Drawing.Printing.PrintPageEventArgs" konvertiert werden.
Kann mir bitte jemand sagen, was ich hier übergeben muss????
Ich habe schon gegoogelt usw. finde mich aber nicht so ganz in den tutorials zurecht.
Hier mal ein kleiner Quellcodeschnippsel, damit Ihr wisst um was überhaupt geht.
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:
| private void Drucken_Click(object sender, EventArgs e) { PrintDocument printDocument1 = new PrintDocument(); PrintDialog dia = new PrintDialog(); printDocument1.PrinterSettings = dia.PrinterSettings; Graphics g = this.box.CreateGraphics(); if (dia.ShowDialog() == DialogResult.OK) { for (int i = 0; i < this.fileEntries.Length; i++) { printDocument1_PrintPage(g,e); printDocument1.Print(); }
}
}
private void printDocument1_PrintPage(object sender, PrintPageEventArgs ev) { ev.Graphics.DrawImage(Image.FromFile(this.fileEntries[1]), ev.Graphics.VisibleClipBounds); } |
Viele Grüße und besten Dank
Peter
JüTho - Mo 30.03.09 14:08
Hallo Peter,
du hast das Druck-Prinzip noch nicht verstanden. Mit der PrintDocument-Klasse wird das Drucken vorbereitet und eingerichtet; das PrintPage-Ereignis wird vom "NET-Printer" ausgelöst und nicht vom Programmierer-Code; aber im PrintPage-EventHandler wird der Druck gesteuert. Du musst also den EventHandler an das PrintDocument hängen und dort das Graphics-Objekt der aktuellen Druckseite mit den Inhalten füllen.
Siehe
SDK-Doku/MSDN PrintDocument.PrintPage-Ereignis (Beispiel) oder im
OpenBook Kap. 18 Drucken [
http://openbook.galileocomputing.de/visual_csharp/visual_csharp_18_001.htm#mje3e1b9f4759481c3744b319dbb70fa6c]
Jürgen
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 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!