Stampa in backgroud

di il
2 risposte

Stampa in backgroud

Salve ho creto un form con una serie di opzioni di stampa con tre pulsanti per permettere la stampa in docx, rtf, pdf. Dato che nel programma ho varie schede (form) all'interno delle quali sono presenti dei metodi generici void stampa(), per stampare quello che c'è nella specifica form, vorrei eseguire in backgroud la stampa (magari con l'apertura di una progresbar) in modo da non bloccare l'applicazione.
I metodi presenti nelle varie form vengono richiamati in metodo delle form opzioni di stampa (di cui ho detto all'inizio) e a sua volta questa viene richiamata nelle istruzioni associate allo specifico pulsante (per salvare in docx, rtf o pdf). di seguito inserisco i metodi stampa riferiti ad uno dei form presenti (da prendere come esempio) e quelli presenti sul form di opzione stampa, per far comprendere meglio la cosa.

void stampa() presente in uno dei 19 form presenti nel programma

        #region STAMPA
        public void stampa()
        {

            int font_size_testo = 10;
            int font_size_tab_trasp = 10;
            int font_size_tab = 7;
            int font_size_tab_max = 8;

            string tipo_font_testo = "Times New Roman";
            string tipo_font_tab_trasp = "Times New Roman";
            string tipo_font_tab = "Times New Roman";
            //1cm = 28.41091f

            //WordDocument doc = new WordDocument();
            //Add a section & a paragraph in the empty document
            //document.EnsureMinimal();
            //Aggiungi nuova sezione
            //f1.pag = f1.doc.AddSection(); //permette di creare nuova pagina inserendo in essa tutti i dati selezionati sotto
            //Secifica margini 1cm = 28.41091f
            //f1.pag.PageSetup.Margins.All = 42.6f; //1.5cm

            //aggiungo paragrafo (riga di testo)
            IWParagraph par = f1.pag.AddParagraph();

            #region DATI GEOMETRICI
            if (f1.odocx.dati_gen_ck.Checked)
            {
                IWTextRange testo1 = par.AppendText(descr_tb.Text + "\n\n" + "DATI GEOMETRICI\n\n");
                //sets the font formatting of the text range
                testo1.CharacterFormat.Bold = true;
                testo1.CharacterFormat.FontName = tipo_font_testo;
                testo1.CharacterFormat.FontSize = font_size_testo;

                testo1 = par.AppendText("Lunghezza libera d'inflessione  L0,y = " + L0y_tb.Text + " m\n" + "Lunghezza libera d'inflessione  L0,z = " + L0z_tb.Text + " m\n"
                    + "Lunghezza efficace  Leff = " + Leff_tb.Text + " m\n");
                //sets the font formatting of the text range
                testo1.CharacterFormat.Bold = false;
                testo1.CharacterFormat.FontName = tipo_font_testo;
                testo1.CharacterFormat.FontSize = font_size_testo;

                if (sez_comp_ck.Checked)
                {
                    if (comp_y_rb.Checked)
                    {
                        testo1 = par.AppendText("\nSezione composta lungo Y\n");
                        //sets the font formatting of the text range
                        testo1.CharacterFormat.Bold = false;
                        testo1.CharacterFormat.FontName = tipo_font_testo;
                        testo1.CharacterFormat.FontSize = font_size_testo;
                    }
                    else
                    {
                        testo1 = par.AppendText("\nSezione composta lungo Z\n");
                        //sets the font formatting of the text range
                        testo1.CharacterFormat.Bold = false;
                        testo1.CharacterFormat.FontName = tipo_font_testo;
                        testo1.CharacterFormat.FontSize = font_size_testo;
                    }

                    testo1 = par.AppendText("\nDati montanti\n");
                    //sets the font formatting of the text range
                    testo1.CharacterFormat.Bold = true;
                    testo1.CharacterFormat.FontName = tipo_font_testo;
                    testo1.CharacterFormat.FontSize = font_size_testo;

                    testo1 = par.AppendText("Numero di elementi : " + n_mont_tb.Text + "\n" + "Tipo di distanziatori : " + distanz_tb.Text + "\n" + "a = " + a_tb.Text + " cm\n" +
                        "l1 = " + l1_tb.Text + " cm\n" + "l2 = " + l2_tb.Text + " cm\n" + "Tipo di connessioni tra distanziatori : " + connes_tb.Text + "\n");
                    //sets the font formatting of the text range
                    testo1.CharacterFormat.Bold = false;
                    testo1.CharacterFormat.FontName = tipo_font_testo;
                    testo1.CharacterFormat.FontSize = font_size_testo;
                }

                //TABELLA
                //aggiungi tabella
                IWTable tabella = f1.pag.AddTable();
                tabella.TableFormat.Borders.BorderType = Syncfusion.DocIO.DLS.BorderStyle.None;
                //Creare il numero specifico di righe e colonne
                int rig = 1;
                int col = 3;
                tabella.ResetCells(rig, col);

                /*- Inserire sceglie la cella di riferimento impostando la variabile cella dopo averla creata da WtableCell, va creata una sola volta
                 *- aggiungere una riga (paragrafo alla cella creata e non alla pagaina come nel caso sopra delle righe.
                 *- inserire il testo da mettere nelle celle creando variabile testo celle tramite IWTextRange (va fatto solo per la prima volta
                 *- inserire le righe con le impostazioni del testo
                 * 
                 *- ripetere per tutte le colonne senza creare nuove variabili
                 * 
                 * E' possibile usare il comando cella.Whidt se voglio impostare la dimensione specifica di una cella e successivamente in altra cella (es . 0;1)
                 * il comando tabella.TableFormat.IsAutoResized = true; per rendere con allineamento automatico l'altra (questa forse è meglio inserirla alla fine.
                 * 
                */


                #region DATI GEOMETRICI SEZ A
                if (f1.odocx.dati_A_ck.Checked)
                {
                    WTableCell cella = tabella.Rows[0].Cells[0];
                    //larghezza 10 = 0.35cm, 1cm = 28.57
                    //cella.Width = 40;
                    //tabella.TableFormat.IsAutoResized = true;
                    cella.CellFormat.VerticalAlignment = VerticalAlignment.Top;
                    par = cella.AddParagraph();
                    par.ParagraphFormat.HorizontalAlignment = Syncfusion.DocIO.DLS.HorizontalAlignment.Left;
                    //E' opportuno dal secondo in poi inserire \n\n
                    IWTextRange testo_celle = par.AppendText("Sezione A\n");
                    testo_celle.CharacterFormat.Bold = true;
                    testo_celle.CharacterFormat.FontName = tipo_font_tab_trasp;
                    testo_celle.CharacterFormat.FontSize = font_size_tab_trasp;

                    testo_celle = par.AppendText("B = " + Bz_seza_tb.Text + " cm\n" + "H = " + Hy_seza_tb.Text + " cm\n\n");
                    testo_celle.CharacterFormat.Bold = false;
                    testo_celle.CharacterFormat.FontName = tipo_font_tab_trasp;
                    testo_celle.CharacterFormat.FontSize = font_size_tab_trasp;

                    if (fori_seza_ck.Checked)
                    {
                        testo_celle = par.AppendText("Sezione ridotta per fori/Intagli\n");
                        testo_celle.CharacterFormat.Bold = false;
                        testo_celle.CharacterFormat.FontName = tipo_font_tab_trasp;
                        testo_celle.CharacterFormat.FontSize = font_size_tab_trasp;

                        testo_celle = par.AppendText("B rid = " + Brid_seza_tb.Text + " mm\n" + "H rid = " + Hrid_seza_tb.Text + " mm\n\n");
                        testo_celle.CharacterFormat.Bold = false;
                        testo_celle.CharacterFormat.FontName = tipo_font_tab_trasp;
                        testo_celle.CharacterFormat.FontSize = font_size_tab_trasp;
                    }

                    testo_celle = par.AppendText("A = " + A_seza_tb.Text + " mm²\n" + "Jy = " + Jy_seza_tb.Text + " mm4\n" + "Jz = " + Jz_seza_tb.Text + " mm4\n" +
                      "Wy = " + Wy_seza_tb.Text + " mm³\n" + "Wz = " + Wz_seza_tb.Text + " mm³\n" + "iy = " + iy_seza_tb.Text + " mm\n" + "iy = " + iy_seza_tb.Text + " mm\n" +
                      "Jtor = " + Jtor_seza_tb.Text + " mm4\n");
                    testo_celle.CharacterFormat.Bold = false;
                    testo_celle.CharacterFormat.FontName = tipo_font_tab_trasp;
                    testo_celle.CharacterFormat.FontSize = font_size_tab_trasp;

                    if (int_seza_ck.Checked)
                    {
                        if (int_inf_seza_rb.Checked)
                        {
                            testo_celle = par.AppendText("\nIntaglio inferiore\n");
                            testo_celle.CharacterFormat.Bold = false;
                            testo_celle.CharacterFormat.FontName = tipo_font_tab_trasp;
                            testo_celle.CharacterFormat.FontSize = font_size_tab_trasp;
                        }
                        else
                        {
                            testo_celle = par.AppendText("\nIntaglio superiore\n");
                            testo_celle.CharacterFormat.Bold = false;
                            testo_celle.CharacterFormat.FontName = tipo_font_tab_trasp;
                            testo_celle.CharacterFormat.FontSize = font_size_tab_trasp;
                        }

                        testo_celle = par.AppendText("Li = " + int_Li_seza_tb.Text + " cm\n" + "x = " + int_xi_seza_tb.Text + " cm\n");
                        testo_celle.CharacterFormat.Bold = false;
                        testo_celle.CharacterFormat.FontName = tipo_font_tab_trasp;
                        testo_celle.CharacterFormat.FontSize = font_size_tab_trasp;

                    }
                }
                #endregion

                #region DATI GEOMETRICI SEZ C
                if (f1.odocx.dati_C_ck.Checked)
                {
                    WTableCell cella = tabella.Rows[0].Cells[1];
                    //larghezza 10 = 0.35cm, 1cm = 28.57
                    //cella.Width = 40;
                    //tabella.TableFormat.IsAutoResized = true;
                    cella.CellFormat.VerticalAlignment = VerticalAlignment.Top;
                    par = cella.AddParagraph();
                    par.ParagraphFormat.HorizontalAlignment = Syncfusion.DocIO.DLS.HorizontalAlignment.Left;
                    //E' opportuno dal secondo in poi inserire \n\n
                    IWTextRange testo_celle = par.AppendText("Sezione C\n");
                    testo_celle.CharacterFormat.Bold = true;
                    testo_celle.CharacterFormat.FontName = tipo_font_tab_trasp;
                    testo_celle.CharacterFormat.FontSize = font_size_tab_trasp;

                    testo_celle = par.AppendText("B = " + Bz_sezc_tb.Text + " cm\n" + "H = " + Hy_sezc_tb.Text + " cm\n\n");
                    testo_celle.CharacterFormat.Bold = false;
                    testo_celle.CharacterFormat.FontName = tipo_font_tab_trasp;
                    testo_celle.CharacterFormat.FontSize = font_size_tab_trasp;

                    if (fori_seza_ck.Checked)
                    {
                        testo_celle = par.AppendText("Sezione ridotta per fori/Intagli\n");
                        testo_celle.CharacterFormat.Bold = false;
                        testo_celle.CharacterFormat.FontName = tipo_font_tab_trasp;
                        testo_celle.CharacterFormat.FontSize = font_size_tab_trasp;

                        testo_celle = par.AppendText("B rid = " + Brid_sezc_tb.Text + " mm\n" + "H rid = " + Hrid_sezc_tb.Text + " mm\n\n");
                        testo_celle.CharacterFormat.Bold = false;
                        testo_celle.CharacterFormat.FontName = tipo_font_tab_trasp;
                        testo_celle.CharacterFormat.FontSize = font_size_tab_trasp;
                    }

                    testo_celle = par.AppendText("A = " + A_sezc_tb.Text + " mm²\n" + "Jy = " + Jy_sezc_tb.Text + " mm4\n" + "Jz = " + Jz_sezc_tb.Text + " mm4\n" +
                      "Wy = " + Wy_sezc_tb.Text + " mm³\n" + "Wz = " + Wz_sezc_tb.Text + " mm³\n" + "iy = " + iy_sezc_tb.Text + " mm\n" + "iy = " + iy_sezc_tb.Text + " mm\n" +
                      "Jtor = " + Jtor_sezc_tb.Text + " mm4\n");
                    testo_celle.CharacterFormat.Bold = false;
                    testo_celle.CharacterFormat.FontName = tipo_font_tab_trasp;
                    testo_celle.CharacterFormat.FontSize = font_size_tab_trasp;


                }
                #endregion

                #region DATI GEOMETRICI SEZ B
                if (f1.odocx.dati_A_ck.Checked)
                {
                    WTableCell cella = tabella.Rows[0].Cells[2];
                    //larghezza 10 = 0.35cm, 1cm = 28.57
                    //cella.Width = 40;
                    //tabella.TableFormat.IsAutoResized = true;
                    cella.CellFormat.VerticalAlignment = VerticalAlignment.Top;
                    par = cella.AddParagraph();
                    par.ParagraphFormat.HorizontalAlignment = Syncfusion.DocIO.DLS.HorizontalAlignment.Left;
                    //E' opportuno dal secondo in poi inserire \n\n
                    IWTextRange testo_celle = par.AppendText("Sezione B\n");
                    testo_celle.CharacterFormat.Bold = true;
                    testo_celle.CharacterFormat.FontName = tipo_font_tab_trasp;
                    testo_celle.CharacterFormat.FontSize = font_size_tab_trasp;

                    testo_celle = par.AppendText("B = " + Bz_sezb_tb.Text + " cm\n" + "H = " + Hy_sezb_tb.Text + " cm\n\n");
                    testo_celle.CharacterFormat.Bold = false;
                    testo_celle.CharacterFormat.FontName = tipo_font_tab_trasp;
                    testo_celle.CharacterFormat.FontSize = font_size_tab_trasp;

                    if (fori_seza_ck.Checked)
                    {
                        testo_celle = par.AppendText("Sezione ridotta per fori/Intagli\n");
                        testo_celle.CharacterFormat.Bold = false;
                        testo_celle.CharacterFormat.FontName = tipo_font_tab_trasp;
                        testo_celle.CharacterFormat.FontSize = font_size_tab_trasp;

                        testo_celle = par.AppendText("B rid = " + Brid_sezb_tb.Text + " mm\n" + "H rid = " + Hrid_sezb_tb.Text + " mm\n\n");
                        testo_celle.CharacterFormat.Bold = false;
                        testo_celle.CharacterFormat.FontName = tipo_font_tab_trasp;
                        testo_celle.CharacterFormat.FontSize = font_size_tab_trasp;
                    }

                    testo_celle = par.AppendText("A = " + A_sezb_tb.Text + " mm²\n" + "Jy = " + Jy_sezb_tb.Text + " mm4\n" + "Jz = " + Jz_sezb_tb.Text + " mm4\n" +
                      "Wy = " + Wy_sezb_tb.Text + " mm³\n" + "Wz = " + Wz_sezb_tb.Text + " mm³\n" + "iy = " + iy_sezb_tb.Text + " mm\n" + "iy = " + iy_sezb_tb.Text + " mm\n" +
                      "Jtor = " + Jtor_sezb_tb.Text + " mm4\n");
                    testo_celle.CharacterFormat.Bold = false;
                    testo_celle.CharacterFormat.FontName = tipo_font_tab_trasp;
                    testo_celle.CharacterFormat.FontSize = font_size_tab_trasp;

                    if (int_sezb_ck.Checked)
                    {
                        if (int_inf_sezb_rb.Checked)
                        {
                            testo_celle = par.AppendText("\nIntaglio inferiore\n");
                            testo_celle.CharacterFormat.Bold = false;
                            testo_celle.CharacterFormat.FontName = tipo_font_tab_trasp;
                            testo_celle.CharacterFormat.FontSize = font_size_tab_trasp;
                        }
                        else
                        {
                            testo_celle = par.AppendText("\nIntaglio superiore\n");
                            testo_celle.CharacterFormat.Bold = false;
                            testo_celle.CharacterFormat.FontName = tipo_font_tab_trasp;
                            testo_celle.CharacterFormat.FontSize = font_size_tab_trasp;
                        }

                        testo_celle = par.AppendText("Li = " + int_Li_sezb_tb.Text + " cm\n" + "x = " + int_xi_sezb_tb.Text + " cm\n");
                        testo_celle.CharacterFormat.Bold = false;
                        testo_celle.CharacterFormat.FontName = tipo_font_tab_trasp;
                        testo_celle.CharacterFormat.FontSize = font_size_tab_trasp;

                    }
                }
                #endregion  
            }
            #endregion

            #region CARATTERISTICHE MATERIALI
            if(f1.odocx.car_mec_ck.Checked)
            {
                IWParagraph par1 = f1.pag.AddParagraph();

                IWTextRange testo1 = par1.AppendText("\nCARATTERITICHE MATERIALE\n\n");
                //sets the font formatting of the text range
                testo1.CharacterFormat.Bold = true;
                testo1.CharacterFormat.FontName = tipo_font_testo;
                testo1.CharacterFormat.FontSize = font_size_testo;

                testo1 = par1.AppendText("Tipo : " + tipo_tb.Text + "\n" + tipo1_tb.Text + "\n");
                //sets the font formatting of the text range
                testo1.CharacterFormat.Bold = false;
                testo1.CharacterFormat.FontName = tipo_font_testo;
                testo1.CharacterFormat.FontSize = font_size_testo;

                if(sistema_qualita_ck.Checked)
                {
                    testo1 = par1.AppendText(sistema_qualita_ck.Text + "\n");
                    //sets the font formatting of the text range
                    testo1.CharacterFormat.Bold = false;
                    testo1.CharacterFormat.FontName = tipo_font_testo;
                    testo1.CharacterFormat.FontSize = font_size_testo;
                }

                testo1 = par1.AppendText("Classe di servizio : " + cl_servizio_tb.Text + "\n");
                //sets the font formatting of the text range
                testo1.CharacterFormat.Bold = false;
                testo1.CharacterFormat.FontName = tipo_font_testo;
                testo1.CharacterFormat.FontSize = font_size_testo;

                //TABELLA
                //aggiungi tabella
                IWTable tabella = f1.pag.AddTable();
                tabella.TableFormat.Borders.BorderType = Syncfusion.DocIO.DLS.BorderStyle.None;
                //Creare il numero specifico di righe e colonne
                int rig = 1;
                int col = 3;
                tabella.ResetCells(rig, col);

                /*- Inserire sceglie la cella di riferimento impostando la variabile cella dopo averla creata da WtableCell, va creata una sola volta
                 *- aggiungere una riga (paragrafo alla cella creata e non alla pagaina come nel caso sopra delle righe.
                 *- inserire il testo da mettere nelle celle creando variabile testo celle tramite IWTextRange (va fatto solo per la prima volta
                 *- inserire le righe con le impostazioni del testo
                 * 
                 *- ripetere per tutte le colonne senza creare nuove variabili
                 * 
                 * E' possibile usare il comando cella.Whidt se voglio impostare la dimensione specifica di una cella e successivamente in altra cella (es . 0;1)
                 * il comando tabella.TableFormat.IsAutoResized = true; per rendere con allineamento automatico l'altra (questa forse è meglio inserirla alla fine.
                 * 
                */


                #region RESISTENZA CARATTERISTICA
                if (f1.odocx.rck_ck.Checked)
                {
                    WTableCell cella = tabella.Rows[0].Cells[0];
                    //larghezza 10 = 0.35cm, 1cm = 28.57
                    //cella.Width = 40;
                    //tabella.TableFormat.IsAutoResized = true;
                    cella.CellFormat.VerticalAlignment = VerticalAlignment.Top;
                    par = cella.AddParagraph();
                    par.ParagraphFormat.HorizontalAlignment = Syncfusion.DocIO.DLS.HorizontalAlignment.Left;
                    //E' opportuno dal secondo in poi inserire \n\n
                    IWTextRange testo_celle = par.AppendText("Resistenza Caratteristica\n");
                    testo_celle.CharacterFormat.Bold = true;
                    testo_celle.CharacterFormat.FontName = tipo_font_tab_trasp;
                    testo_celle.CharacterFormat.FontSize = font_size_tab_trasp;

                    testo_celle = par.AppendText("f m,k = " + fmk_tb.Text + " N/mmq\n" + "f t,0,k = " + ft0k_tb.Text + " N/mmq\n" + "f t,90,k = " + ft90k_tb.Text + " N/mmq\n" +
                        "f c,0,k = " + fc0k_tb.Text + " N/mmq\n" + "f c,90,k = " + fc90k_tb.Text + " N/mmq\n" + "f v,k = " + fvk_tb.Text + " N/mmq\n");
                    testo_celle.CharacterFormat.Bold = false;
                    testo_celle.CharacterFormat.FontName = tipo_font_tab_trasp;
                    testo_celle.CharacterFormat.FontSize = font_size_tab_trasp;

                }
                #endregion

                #region MASSA VOLUMETRICA
                if (f1.odocx.mass_ck.Checked)
                {
                    WTableCell cella = tabella.Rows[0].Cells[1];
                    //larghezza 10 = 0.35cm, 1cm = 28.57
                    //cella.Width = 40;
                    //tabella.TableFormat.IsAutoResized = true;
                    cella.CellFormat.VerticalAlignment = VerticalAlignment.Top;
                    par = cella.AddParagraph();
                    par.ParagraphFormat.HorizontalAlignment = Syncfusion.DocIO.DLS.HorizontalAlignment.Left;
                    //E' opportuno dal secondo in poi inserire \n\n
                    IWTextRange testo_celle = par.AppendText("Massa volumetrica\n");
                    testo_celle.CharacterFormat.Bold = true;
                    testo_celle.CharacterFormat.FontName = tipo_font_tab_trasp;
                    testo_celle.CharacterFormat.FontSize = font_size_tab_trasp;

                    testo_celle = par.AppendText("? k = " + rhok_tb.Text + " kg/mc\n" + "? mean = " + rhomean_tb.Text + " kg/mc\n");
                    testo_celle.CharacterFormat.Bold = false;
                    testo_celle.CharacterFormat.FontName = tipo_font_tab_trasp;
                    testo_celle.CharacterFormat.FontSize = font_size_tab_trasp;

                }
                #endregion

                #region MODULI ELASTICI
                if (f1.odocx.E_ck.Checked)
                {
                    WTableCell cella = tabella.Rows[0].Cells[2];
                    //larghezza 10 = 0.35cm, 1cm = 28.57
                    //cella.Width = 40;
                    //tabella.TableFormat.IsAutoResized = true;
                    cella.CellFormat.VerticalAlignment = VerticalAlignment.Top;
                    par = cella.AddParagraph();
                    par.ParagraphFormat.HorizontalAlignment = Syncfusion.DocIO.DLS.HorizontalAlignment.Left;
                    //E' opportuno dal secondo in poi inserire \n\n
                    IWTextRange testo_celle = par.AppendText("Moduli elastici\n");
                    testo_celle.CharacterFormat.Bold = true;
                    testo_celle.CharacterFormat.FontName = tipo_font_tab_trasp;
                    testo_celle.CharacterFormat.FontSize = font_size_tab_trasp;

                    testo_celle = par.AppendText("E 0,mean = " + E0mean_tb.Text + " N/mmq\n" + "E 0,05 = " + E005_tb.Text + " N/mmq\n" + "E 90,mean = " + E90mean_tb.Text + " N/mmq\n" +
                        "E 90,05 = " + E90005_tb.Text + " N/mmq\n" + "G mean = " + Gmean_tb.Text + " N/mmq\n" + "G 0,05 = " + G005_tb.Text + " N/mmq\n");
                    testo_celle.CharacterFormat.Bold = false;
                    testo_celle.CharacterFormat.FontName = tipo_font_tab_trasp;
                    testo_celle.CharacterFormat.FontSize = font_size_tab_trasp;

                }
                #endregion
            }
            #endregion

        }
        #endregion





void stampa() presente nell'opzione di stampa per la scelta dei dati da stampare

  void stampa()
        {
            f1.pag = f1.doc.AddSection();

            f1.pag.PageSetup.Margins.All = 42.6f; //1.5cm

            if(dati_gen_ck.Checked || car_mec_ck.Checked)
                f1.sem.stampa();

            if (incendio_ck.Checked)
                f1.sinc.stampa();

            if (traz_par_ck.Checked)
            {
                f1.copia_dati_per_ver_traz_par();
                f1.traz_par.stampa();
            }
            

            if (comp_par_ck.Checked)
            {
                f1.copia_dati_per_ver_comp_par();
                f1.comp_par.stampa();
            }

            if (inst_eul_ck.Checked)
            {
                f1.copia_dati_per_ver_inst_euler();
                f1.inst_eul.stampa();
            }

            if (taglio_ck.Checked)
            {
                f1.copia_dati_per_ver_taglio();
                f1.taglio.stampa();
            }

            if (flex_ck.Checked)
            {
                f1.copia_dati_per_ver_flex();
                f1.flex.stampa();
            }

            if (sverg_ck.Checked)
            {
                f1.copia_dati_per_ver_sverg();
                f1.sverg.stampa();
            }

            if (presflex_ck.Checked)
            {
                f1.copia_dati_per_ver_pflex();
                f1.pflex.stampa();
            }

            if (inst_pf_ck.Checked)
            {
                f1.copia_dati_per_ver_ipflex();
                f1.ipflex.stampa();
            }

            if (tensflex_ck.Checked)
            {
                f1.copia_dati_per_ver_tflex();
                f1.tflex.stampa();
            }

            if (inst_tf_ck.Checked)
            {
                f1.copia_dati_per_ver_itflex();
                f1.itflex.stampa();
            }

            if (tors_ck.Checked)
            {
                f1.copia_dati_per_ver_torsione();
                f1.tor.stampa();
            }

            if (tt_ck.Checked)
            {
                f1.copia_dati_per_ver_torsione_taglio();
                f1.ttor.stampa();
            }

            if (comp_ort_ck.Checked)
            {
                f1.copia_dati_per_ver_comp_ort();
                f1.comp_ort.stampa();
            }

            if (comp_incl_ck.Checked)
            {
                f1.copia_dati_per_ver_comp_incl();
                f1.comp_incl.stampa();
            }

            if (traz_ort_ck.Checked)
            {
                f1.copia_dati_per_ver_traz_ort();
                f1.traz_ort.stampa();
            }
          
        }

associazione del codice al pulsante stampa docx per la stampa del file

    private void stampa_docx_bt_Click(object sender, EventArgs e)
        {
            


            //saveFileDocx.FileName = f1.dvc.descrizione_tb.Text;

            if (metodo_calc_ck.Checked)
            {
                string file_model = Application.StartupPath + ("\\stampa\\Nota_calcolo.docx");
                string file_temp = Application.StartupPath + ("\\stampa\\stampa_inter.docx");

                //avvia_backgroudWorker();

                stampa(sender, e);
                f1.doc.Save(file_temp);
                f1.doc.Close();

                WordDocument sourceDocument = new WordDocument(file_temp);
                //Opens the destination document 
                WordDocument destinationDocument = new WordDocument(file_model);

                //Imports the contents of source document at the end of destination document
                destinationDocument.ImportContent(sourceDocument, ImportOptions.UseDestinationStyles);
                //Saves the destination document

                if (saveFileDocx.ShowDialog() == DialogResult.OK)
                {
               
                    try
                    {
                        destinationDocument.Save(saveFileDocx.FileName, FormatType.Docx);
                        //closes the document instances
                        sourceDocument.Close();
                        destinationDocument.Close();

                        MessageBox.Show("Salvataggio file docx eseguito correttamente in \n\n" + saveFileDocx.FileName, "", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    catch (Exception)
                    {
                        MessageBox.Show("DOCUMENTO DOCX APERTO CHIDERE IL DOCUMENTO E STAMPARE NUOVAMENTO", "ATTENZIONE", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }

                if (apri_stampa_ck.Checked)
                {
                    try
                    {
                        System.Diagnostics.Process.Start(saveFileDocx.FileName);
                    }
                    catch (Exception)
                    {

                    }
                }

            }
            else
            {
                if (saveFileDocx.ShowDialog() == DialogResult.OK)
                {
                    
                    try
                    {
                        //avvia_backgroudWorker();

                        stampa(sender, e);
                        f1.doc.Save(saveFileDocx.FileName);
                        f1.doc.Close();

                        MessageBox.Show("Salvataggio file docx eseguito correttamente in \n\n" + saveFileDocx.FileName, "", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    catch (Exception)
                    {
                        MessageBox.Show("DOCUMENTO DOCX APERTO CHIDERE IL DOCUMENTO E STAMPARE NUOVAMENTO", "ATTENZIONE", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }

                if (apri_stampa_ck.Checked)
                {
                    try
                    {
                        System.Diagnostics.Process.Start(saveFileDocx.FileName);
                    }
                    catch (Exception)
                    {

                    }
                }

            }

        }
ho provato a vedere il comando backgroudworker ma non saprei come passare l'infinità di dati se non facendo leggere direttamente le varie stampe() e nello specifico meglio l'unico contenuto del pulsante stampa_docx(), che richiama in serie gli altri, dato che backgroundworker non consente la lettura in altro thred.

Grazie anticipate

2 Risposte

  • Re: Stampa in backgroud

    Scusa, ma perché aprire una nuova discussione se ne stavamo già parlando in quella precedente?
  • Re: Stampa in backgroud

    Avevo solo seguito il consiglio di un altro utente, non ho cancellato la discussine perchè stavo discutendone con te.
    Grazie comunque per le indicazioni datemi
Devi accedere o registrarti per scrivere nel forum
2 risposte