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