Laden...

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

Letzter Beitrag vor 4 Jahren 3 Posts 736 Views
[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...

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.

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