private void CopyListBtn_Click(System.Object sender, System.EventArgs e) { int Ninds = FileListTxt.SelectedIndices.Count; if (Ninds == 0) //no files selected but asked to copy files { MessageBox.Show("No Files Selected!...", "Error"); return; } string[] selectfiles = new string[Ninds]; for (int j = 0; j < Ninds; j++) { selectfiles[j] = (string)FileListTxt.Items[FileListTxt.SelectedIndices[j]]; } FolderBrowserDialog fdlg = new FolderBrowserDialog(); fdlg.SelectedPath = selectfiles[0].Substring(0, selectfiles[0].LastIndexOf("\\") + 1); if (fdlg.ShowDialog() == DialogResult.Cancel) { return; } object[] arg = new object[3] { selectfiles, fdlg.SelectedPath, "copy" }; WAITBAR = new WaitBar(); WAITBAR.Text = "Copying Files..."; WAITBAR.ProgressBar.Maximum = selectfiles.Length; FileCopyBGWrkr.RunWorkerAsync(arg); WAITBAR.ShowDialog(); }
private void FileCopyBGWrkr_DoWork(System.Object sender, System.ComponentModel.DoWorkEventArgs e) { object[] arg = (object[])e.Argument; string[] selectfiles = (string[])arg[0]; string selectedpath = (string)arg[1]; string style = (string)arg[2]; bool move = false; if (style == "move") { move = true; } int Ninds = selectfiles.Length; string newfile; for (int j = 0; j < Ninds; j++) { if (WAITBAR.DialogResult == DialogResult.Cancel) { return; } FileCopyBGWrkr.ReportProgress(j + 1, move); newfile = selectedpath + "\\" + selectfiles[j].Substring(selectfiles[j].LastIndexOf("\\")); while (File.Exists(newfile)) //then need to add some appendage { int ind = newfile.LastIndexOf("."); if (newfile.Substring(ind - 1, 1) == ")") { int num = Convert.ToInt32(newfile.Substring(newfile.LastIndexOf("(") + 1, newfile.LastIndexOf(")") - 1 - newfile.LastIndexOf("("))); newfile = newfile.Replace("(" + num.ToString() + ").", "(" + (num + 1).ToString() + ")."); } else { newfile = newfile.Insert(ind, " (1)"); if (File.Exists(newfile)) { int num = Convert.ToInt32(newfile.Substring(newfile.LastIndexOf("(") + 1, newfile.LastIndexOf(")") - 1 - newfile.LastIndexOf("("))); newfile = newfile.Replace("(" + num.ToString() + ").", "(" + (num + 1).ToString() + ")."); } } } if (move) { File.Move(selectfiles[j], newfile); } else { File.Copy(selectfiles[j], newfile); } } }