public Form1()
{
InitializeComponent();
backgroundWorker1.WorkerReportsProgress = true;
backgroundWorker1.WorkerSupportsCancellation = true;
}
private void GetFile(string source)
{
files = Directory.GetFiles(source, "*.*", System.IO.SearchOption.AllDirectories); //Legge tutti i file dalla directory passata
progressBar1.Maximum = files.Length; //Impostiamo come valore massimo della progressBar i bayte totali di tutti i file
}
private void btnStart_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(txtSorgente.Text) || string.IsNullOrEmpty(txtDestinazione.Text))
{
MessageBox.Show("Non hai selezionato la directory!", "Avviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
backgroundWorker1.RunWorkerAsync();
btnStart.Enabled = false;
btnCancella.Enabled = true;
}
private void btnCancella_Click(object sender, EventArgs e)
{
backgroundWorker1.CancelAsync();
btnCancella.Enabled = false;
btnStart.Enabled = true;
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
if (backgroundWorker1.CancellationPending)
e.Cancel = true;
else
{
string newDir = "";
foreach (string f in files)
{
fi = new FileInfo(f);
newDir = targetDir + "\\" + fi.DirectoryName.Substring(sourceDir.Length) + "\\";
if (!Directory.Exists(newDir))
Directory.CreateDirectory(newDir);
totaleFile += 1; //Conto i file
nomeFile = "Copia file: " + f.Substring(0, 3) + "...\\" + fi.Name; // Preleva i nomi dei file
File.Copy(f, newDir + fi.Name, true); //Copio il file
backgroundWorker1.ReportProgress(totaleFile);
}
}
}
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
lblPercentuale.Text = e.ProgressPercentage + " %";
lblTotaleFile.Text = "Totale file: " + totaleFile.ToString() + " di " + files.Length.ToString();
lblNomiFileProcessati.Text = nomeFile; // Mostro il nome dei file
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Cancelled)
{
MessageBox.Show("La copia è stata interrotta!", "Avviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
btnCancella.Enabled = false;
}
else
{
MessageBox.Show("Copiato con successo.", "Avviso", MessageBoxButtons.OK, MessageBoxIcon.Information);
btnStart.Enabled = true;
btnCancella.Enabled = false;
}
}
private void btnSorgente_Click(object sender, EventArgs e)
{
FolderBrowserDialog fbd = new FolderBrowserDialog();
if(fbd.ShowDialog() == DialogResult.OK)
{
txtSorgente.Text = fbd.SelectedPath;
sourceDir = txtSorgente.Text;
GetFile(sourceDir);
}
}
private void btnDestinazione_Click(object sender, EventArgs e)
{
FolderBrowserDialog fbd = new FolderBrowserDialog();
if (fbd.ShowDialog() == DialogResult.OK)
{
txtDestinazione.Text = fbd.SelectedPath;
targetDir = txtDestinazione.Text;
}
}