none
Druckereinstellung für Charts RRS feed

  • Frage

  • Hallo,

    ich möchte 3 Charts drucken. Allerdings bekomme ich nur den PrintPreview() Befehl hin, welcher mir nicht erlaubt, den Drucker selbst zu wählen. In den MSDN Docs steht zwar ein .Print Befehl aber dieser wird als Fehler bei mir angezeigt mit der Auswahl diesen zu "PrintPreview()", "PrintDocument()" und "PrintPage()" ändern.

    private void Doc_PrintPage(object sender, PrintPageEventArgs e)
            {
                float x = e.MarginBounds.Left;
                float y = e.MarginBounds.Top;
                Bitmap bmp = new Bitmap(this.panel1.Width, this.panel1.Height);
                this.panel1.DrawToBitmap(bmp, new Rectangle(0, 0, this.panel1.Width, this.panel1.Height));
                e.Graphics.DrawImage((Image)bmp, x, y);
    
            }
    
    

    Das ist die Methode, mit der ich ein Panel ausdrucke. Dort funktioniert es, dass ich den Drucker vorher wählen kann. Da ich dies als erstes tute, war ich der Annahme verfallen, dass diese Einstellung für die 3 weitern Printbefehle bestehen bleibt. Jedoch lag ich falsch und die Charts wurden auf dem, von Windows festgelegten, Standarddrucker ausgedruckt.

     private void druckenToolStripMenuItem_Click(object sender, EventArgs e)
            {
                panel1.BackColor = Color.White;
                tableLayoutPanel1.BackColor = Color.Transparent;
                tableLayoutPanel2.BackColor = Color.Transparent;
                tableLayoutPanel3.BackColor = Color.Transparent;
                PrintDocument doc = new PrintDocument();
                doc.PrintPage += this.Doc_PrintPage;
                PrintDialog dlgSettings = new PrintDialog();
                dlgSettings.Document = doc;
                if (dlgSettings.ShowDialog() == DialogResult.OK)
                {
                    doc.Print();
                }
                chart1.Printing.PrintDocument.DefaultPageSettings.Landscape = true;
                chart2.Printing.PrintDocument.DefaultPageSettings.Landscape = true;
                chart3.Printing.PrintDocument.DefaultPageSettings.Landscape = true;
                chart3.Size = new Size(770, 500);
                chart3.Printing.PrintPreview();
                chart3.Size = new Size(770, 205);
                chart1.Size = new Size(770, 500);
                chart1.Printing.PrintPreview();
                chart1.Size = new Size(770, 205);
                chart2.Size = new Size(770, 500);
                chart2.Printing.PrintPreview();
                chart2.Size = new Size(770, 205);
                
                panel1.BackColor = Color.Silver;
                tableLayoutPanel1.BackColor = Color.Silver;
                tableLayoutPanel2.BackColor = Color.Silver;
                tableLayoutPanel3.BackColor = Color.Silver;
            }

    Damit drucke ich alles.

    Zu meiner eigentlichen Frage, wie kann ich den Drucker für alle Prints temporär auf Default setzen?

    Zur Anmerkung: Die Charts werden für den Druck vergrößert, da ich keine andere Möglichkeit bis jetzt gefunden habe, dies manuell zu ändern. Nachdem der Druck bestätigt wird, wird das Chart wieder in seine ursprüngliche Größe zurückgeformt.

    Montag, 9. November 2020 07:31

Antworten

  • Hallo Isosek,

    Um auf einem bestimmten Drucker zu drucken, müsst Du die PrintDocument-Klasse der PrintDialog-Klasse zuweisen, bevor Du die ShowDialog-Methode aufrufst. Du erreichst dies, indem Du die PrintDocument-Klasse verwendest und den Drucker in der PrinterSettings.InstalledPrinters-Eigenschaft auswählst. Diese Threads enthalten zusätzliche Informationen:
    Print to a Specific Printer
    Windows Forms Printer Selection List
    Wenn Du einen neuen Drucker als Standarddrucker festlegen möchtest, solltest Du die SetDefaultPrinter-Windows-API verwenden, wie hier beschrieben:
    How do I set the windows default printer in C#?
    How do I set a default printer?

    Gruß,

    Ivan Dragov

    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    • Als Antwort markiert Isosek Freitag, 13. November 2020 09:00
    Dienstag, 10. November 2020 07:17
    Administrator