PrintPreviewDialog

19/02/2010 - 20:14 von Jakob Brunner, Luzern Switzerland | Report spam
Salü zàme
Ich möcht das PrintPreviewDialog einsetzen. Möchte aber, beim klicken auf
Print in diesem Dialog zuerst den Drucker wàhlen können.
Wenn ich jetzt auf diesen Button klicke, so wird der Druck automatisch auf
den Standarddrucker ausgeführt. Ich habe keine Möglichkeit gefunden, den
Printbefehl abzufangen, um zuerst z.B. das Dialog "PrintDialog" zu starten.

Zur Not habe ich zuerst den PrintDialog aufgerufen, um den Drucker zu wàhlen
und gehe dann in das PrintPreviewDialog. Ist aber nicht ganz schön... finde
ich!

Wie könnte man dies anders organisieren.

Gruss & Danke
Jakob Brunner
 

Lesen sie die antworten

#1 Marcel Roma
19/02/2010 - 22:17 | Warnen spam
Am Fri, 19 Feb 2010 11:14:01 -0800 schrieb Jakob Brunner, Luzern
Switzerland:

Salü zàme
Ich möcht das PrintPreviewDialog einsetzen. Möchte aber, beim klicken auf
Print in diesem Dialog zuerst den Drucker wàhlen können.
Wenn ich jetzt auf diesen Button klicke, so wird der Druck automatisch auf
den Standarddrucker ausgeführt. Ich habe keine Möglichkeit gefunden, den
Printbefehl abzufangen, um zuerst z.B. das Dialog "PrintDialog" zu starten.

Zur Not habe ich zuerst den PrintDialog aufgerufen, um den Drucker zu wàhlen
und gehe dann in das PrintPreviewDialog. Ist aber nicht ganz schön... finde
ich!

Wie könnte man dies anders organisieren.

Gruss & Danke
Jakob Brunner



Hallo Jakob,

Du könntest folgenden Code benutzen/abàndern:

using System;
using System.Drawing;
using System.Windows.Forms;
using System.Drawing.Printing;

namespace PrintPreviewSelectPrinter
{
public partial class Form1 : Form
{
private bool m_PrinterSelected = false;
private bool m_PreviewDialogShown = false;

public Form1() {
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e) {
m_PreviewDialogShown = false;
m_PrinterSelected = false;
printDocument1 = new PrintDocument();
printDocument1.PrintPage += printDocument1_PrintPage;
printDocument1.BeginPrint += printDocument1_BeginPrint;
printPreviewDialog1.Document = printDocument1;
printPreviewDialog1.ShowDialog();
}

void printDocument1_BeginPrint(object sender, PrintEventArgs e) {
if (!m_PreviewDialogShown) {
m_PreviewDialogShown = true;
return;
}

if (!m_PrinterSelected) {
e.Cancel = true;
if (printDialog1.ShowDialog() == DialogResult.OK)
{
printDocument1.PrinterSettings printDialog1.PrinterSettings;
m_PrinterSelected = true;
printDocument1.Print();
}
m_PrinterSelected = false;
}
}

void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
{
e.Graphics.DrawString("HELLO WORLD!", this.Font, Brushes.Black,
new Point(60, 80));
e.HasMorePages = false;
}
}
}


Gruss
Marcel

Ähnliche fragen