private void button1_Click(object sender, EventArgs e)
        {
            int      IdSC, percentuale = 0, NrLastre, NuoveLastre, nrl;
            DateTime DataConsegna, DataInTextBox;
            string   Cliente;

            if (textBox1.Text == "")
            {
                IdSC = AssegnaIdSuperCommessa();
                IdSC++;
                textBox1.Text = IdSC.ToString();
            }
            nrl           = AggiungiRiga();
            percentuale   = Convert.ToInt32(textBox3.Text) + Convert.ToInt32(commesseDataGridView.SelectedRows[0].Cells[16].Value);
            textBox3.Text = percentuale.ToString();
            Colora(sender, e);
            NrLastre      = Convert.ToInt32(textBox4.Text);
            DataConsegna  = Convert.ToDateTime(commesseDataGridView.SelectedRows[0].Cells[7].Value);
            textBox6.Text = commesseDataGridView.SelectedRows[0].Cells[54].Value.ToString();
            DataInTextBox = Convert.ToDateTime(maskedTextBox1.Text);
            if (DataConsegna < DataInTextBox)
            {
                maskedTextBox1.Text = DataConsegna.ToString();
            }
            NuoveLastre = Convert.ToInt32(commesseDataGridView.SelectedRows[0].Cells[22].Value);

            // NrLastre = NrLastre + nrl; prima era così
            if (NrLastre < nrl)
            {
                NrLastre = nrl;
            }

            textBox4.Text = NrLastre.ToString();
            Cliente       = Convert.ToString(commesseDataGridView.SelectedRows[0].Cells[5].Value);
            textBox5.Text = Cliente;
            if (textBox2.Text == "")
            {
                textBox2.Text = Convert.ToString(commesseDataGridView.SelectedRows[0].Cells[21].Value);
            }
            if (comboBox2.SelectedIndex == 1)
            {
                commesseBindingSource.Filter = "TipoCommessa = 1 AND Stato = 0 AND IDMateriaPrima = '" + textBox2.Text + "'";
            }
        }
        /// <summary>
        /// Metodo per salvare i dati sul database e sul file Word.
        /// </summary>
        /// <param name="obj"></param>
        private void OnSaveInfo(object obj)
        {
            AppDbContext        ctx     = new AppDbContext();
            QdcDbDataRepository repoQdc = new QdcDbDataRepository(ctx);

            // controllo che il percorso dei due file sia differente.
            if (PathTemplate == PathSave)
            {
                MessageBox.Show("Inserisci un percorso differente per il salvataggio", "Internal Error", MessageBoxButton.OK);
            }
            else
            {
                // controllo che il percorso di salvataggio non esista già.
                if (File.Exists((string)PathSave))
                {
                    MessageBox.Show("Il percorso del file di salvataggio esiste già", "Internal Error", MessageBoxButton.OK);
                }
                else
                {
                    try
                    {
                        // copia del file
                        File.Copy(PathTemplate, PathSave, true);
                        // valori predefiniti per l'apertura del file
                        object missing = Missing.Value;
                        // crea l'oggetto che contiene l'istanza di Word
                        Word.Application wordApp = new Word.Application();
                        //  crea l'oggetto che contiene il documento
                        Word.Document aDoc = null;
                        // oggetto che definisce il file copiato (e da modificare)
                        object filename = PathSave;
                        // Se il file esiste
                        if (!File.Exists((string)filename))
                        {
                            MessageBox.Show("File does not exist.", "No File", MessageBoxButton.OK);
                        }
                        else
                        {
                            // controllo che l'utente abbia inserito tutti i dati.
                            if (!string.IsNullOrEmpty(Titolo) && !string.IsNullOrEmpty(NomeFormatore) &&
                                !string.IsNullOrEmpty(CognomeFormatore) && !string.IsNullOrEmpty(MailFormatore) &&
                                !string.IsNullOrEmpty(NomePerito) && !string.IsNullOrEmpty(CognomePerito) &&
                                !string.IsNullOrEmpty(MailPerito) && !string.IsNullOrEmpty(DataInizio.ToString()) &&
                                !string.IsNullOrEmpty(DataConsegna.ToString()) && !string.IsNullOrEmpty(OraInizio.ToString()) &&
                                !string.IsNullOrEmpty(OraFine.ToString()) && !string.IsNullOrEmpty(NumeroOre.ToString()) &&
                                !string.IsNullOrEmpty(PathTemplate) && !string.IsNullOrEmpty(PathSave))
                            {
                                if (DataConsegna == DateTime.MinValue)
                                {
                                    DataConsegna = DateTime.Today;
                                }
                                if (DataInizio == DateTime.MinValue)
                                {
                                    DataInizio = DateTime.Today;
                                }
                                if (OraInizio == DateTime.MinValue)
                                {
                                    OraInizio = DateTime.Today;
                                }
                                if (OraFine == DateTime.MinValue)
                                {
                                    OraFine = DateTime.Today;
                                }

                                // inserimento dei dati sul database.
                                repoQdc.Insert(new Qdc(Titolo, NomeFormatore, CognomeFormatore,
                                                       MailFormatore, NomePerito, CognomePerito, MailPerito,
                                                       DataInizio, DataConsegna, OraInizio, OraFine, NumeroOre, Descrizione,
                                                       NomePerito2, CognomePerito2, MailPerito2, PathTemplate, PathSave));
                                //repoQdc.Insert(new Qdc(Descrizione));

                                // mi sposto in DescrizioneView.
                                OnDescrizioneList(obj);
                            }
                            else
                            {
                                MessageBox.Show("Inserisci tutte le informazioni");
                            }
                        }
                    }
                    catch (Exception)
                    {
                        MessageBox.Show("Errore, il percorso inserito non è valido", "Internal Error", MessageBoxButton.OK);
                    }
                }
            }
        }