Laden...

[gelöst] Wie kann ich aus dem Code heraus eine PrintDialog für einen RDLC-Report anzeigen?

Erstellt von Suspekta vor 3 Jahren Letzter Beitrag vor 3 Jahren 643 Views
S
Suspekta Themenstarter:in
19 Beiträge seit 2020
vor 3 Jahren
[gelöst] Wie kann ich aus dem Code heraus eine PrintDialog für einen RDLC-Report anzeigen?

Hallo Forum,

gibt es eine Möglichkeit aus dem Code heraus eine PrintDialog für einen RDLC-Report anzuzeigen?

Ich habe einen Report in einem ReportViewer (BerichtViewer) der wird auch normal angezeigt also bis hier her alles gut. Ich kann den Report auch als PDF-Datei aus dem Code heraus exportieren auch das funktioniert.

Nur wenn ich nach dem PDF-Export den PrintDialog aufrufe kommt die Meldung:> Fehlermeldung:

System.InvalidOperationException: "Der Vorgang ist aufgrund des aktuellen Zustands des Objekts ungültig."

hier der Code:


  public static void Einfach_Drucken(DataTable table, string berichtdatei, Form parentform, bool mit_pdf, string pdf_name)
        {
            ReportDataSource dts = new ReportDataSource();
            dts.Name = "DataSet1";
            dts.Value = table;

            BerichtViewer rv_form = new BerichtViewer();
            rv_form.MdiParent = parentform;
            rv_form.Dock = DockStyle.Fill;
            rv_form.RV_Berichte.ProcessingMode = ProcessingMode.Local;
            rv_form.RV_Berichte.LocalReport.DataSources.Add(dts);
            rv_form.RV_Berichte.LocalReport.ReportPath = @".\Reports\" + berichtdatei;


            //Erzeugen einer PDF-Datei
            if (mit_pdf == true)
            {
                byte[] Bytes = rv_form.RV_Berichte.LocalReport.Render(format: "PDF", deviceInfo: "");

                using (FileStream stream = new FileStream(pdf_name, FileMode.Create))
                {
                    stream.Write(Bytes, 0, Bytes.Length);
                }
            }

            rv_form.RV_Berichte.RefreshReport();

            rv_form.RV_Berichte.PrintDialog();

        }

Ich wäre für Hilfe sehr dankbar...

16.806 Beiträge seit 2008
vor 3 Jahren

IIRC wenn Du nach der Exception (vor allem der englischen) suchst, dann solltest Du eigentlich recht schnell den Hinweis bekommen, dass Du den Dialog zur falschen Zeit / zu früh aufrufst.
Der Dialog steht erst zu Verfügung, wenn das Rendern fertig ist; dafür gibt es eben den RenderingComplete Event.

Das beachtet Dein Code überhaupt nicht.

S
Suspekta Themenstarter:in
19 Beiträge seit 2020
vor 3 Jahren

Ahhhh ... danke für den Hinweis!
Jetzt klappt alles
Danke