using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Eugen.ESystem; namespace Test_DeleteFileFolder { public partial class Form1 : Form { #region Version und Copyright // Version und Copyright string programName = Path.GetFileNameWithoutExtension(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase); //Den Programmnamen auslesen string programVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(); static object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false); string copyright = GenerateCopyright(); string icon = Application.StartupPath + "\\Info.bmp"; //Assembly Datum und Zeit static DateTime value = AssemblyDateTime(); string date = value.ToShortDateString(); string time = value.ToLongTimeString(); private static DateTime AssemblyDateTime() { var version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version; var buildDateTime = new DateTime(2000, 1, 1).Add(new TimeSpan(TimeSpan.TicksPerDay * version.Build + TimeSpan.TicksPerSecond * 2 * version.Revision)); //Tage seit dem 1. Januar 2000 und Sekunden seit Mitternacht, (multiplizier mit 2 ergibt das Original) return buildDateTime; } private static string CurrentYear() { DateTime dtn = DateTime.Now; return dtn.Year.ToString(); } private static string StartYear() { //string startYear = ((AssemblyCopyrightAttribute)attributes[0]).Copyright; //return startYear.Remove(0, startYear.LastIndexOf(" ") + 1); string startYear = ""; if (((AssemblyCopyrightAttribute)attributes[0]).Copyright.Contains("Copyright © ")) { startYear = ((AssemblyCopyrightAttribute)attributes[0]).Copyright.Replace("Copyright © ", ""); while (startYear.StartsWith(" ")) { startYear = startYear.Remove(0, 1); } startYear = startYear.Remove(startYear.IndexOf(" ")); return startYear; } else { DateTime dtn = DateTime.Now; return dtn.Year.ToString(); } } private static string GenerateCopyright() { string startYear = StartYear(); string currentYear = CurrentYear(); if (startYear == currentYear) { return ((AssemblyCopyrightAttribute)attributes[0]).Copyright; } else { //return String.Concat(((AssemblyCopyrightAttribute)attributes[0]).Copyright, "-", currentYear); return ((AssemblyCopyrightAttribute)attributes[0]).Copyright.Replace(startYear, String.Concat(startYear, "-", currentYear)); } } #endregion #region Programm-Info /// /// Contains the name of the program file /// public static string ProgramName { set; get; } /// /// Contains the version of the program file /// public static string ProgramVersion { set; get; } /// /// Contains the copyright notice /// public static string Copyright { set; get; } private void SetProgramInfo() { //Name, Version und Copyright setzen ProgramName = programName; ProgramVersion = programVersion; Copyright = copyright; } #endregion public Form1() { SetProgramInfo(); InitializeComponent(); } string fileName = ""; bool allFiles = false; bool folders = false; bool subFolders = false; bool countOnly = false; private void buttonCancel_Click(object sender, EventArgs e) { this.Close(); } private void buttonDelete_Click(object sender, EventArgs e) { string undeletableFile = ""; List undeletableFiles = new List(); string message = ""; //In diesem Bereich wird das Löschen ausgeführt --------------------- DeleteFileFolder Del = new DeleteFileFolder(); // Hier wird das Event abonniert. // Das kann jede Klasse auf die gleiche Weise machen. Del.MyEvent += new DeleteFileFolder.EventDelegate(EventHandler); if (checkBoxCountOnly.Checked) { labelDeletableFiles.Text = "Number of deletable Files: " + Del.CountFiles(textBoxFileName.Text, checkBoxSubdirectories.Checked); labelDeletableDirectories.Text = "Number of deletable Directories: \t" + Del.CountDirectories(textBoxFileName.Text); } else { if (radioButtonFileOnly.Checked) { //Dateien löschen if (radioButtonSingleFile.Checked) { undeletableFile = Del.File(textBoxFileName.Text); //Eine einzelen Datei löschen progressBar.Value = 100; } else { if (!checkBoxSubdirectories.Checked) { undeletableFiles = Del.AllFiles(textBoxFileName.Text); //Alle Dateien eines Verzeichnisses löschen } else { undeletableFiles = Del.AllFiles(textBoxFileName.Text, true); //Alle Dateien eines Verzeichnisses und aller Unterverzeichnisse löschen } } } else { undeletableFiles = Del.AllDirectories(textBoxFileName.Text); } } //Nicht löschbare Dateien und Verzeichnisse anzeigen if (undeletableFiles != null & undeletableFiles.Any()) { message = "Undeleteable elements:\n"; foreach (var element in undeletableFiles) { message += element + "\n"; } MessageBox.Show(message); } } private void textBoxFileName_TextChanged(object sender, EventArgs e) { ClearProgressBar(); fileName = textBoxFileName.Text; } private void radioButtonDirectory_CheckedChanged(object sender, EventArgs e) { ClearProgressBar(); } private void radioButtonFileOnly_CheckedChanged(object sender, EventArgs e) { ClearProgressBar(); } private void radioButtonSingleFile_CheckedChanged(object sender, EventArgs e) { ClearProgressBar(); } private void radioButtonAllFiles_CheckedChanged(object sender, EventArgs e) { ClearProgressBar(); } private void checkBoxSubdirectories_CheckedChanged(object sender, EventArgs e) { ClearProgressBar(); subFolders = !subFolders; } private void checkBoxCountOnly_CheckedChanged(object sender, EventArgs e) { ClearProgressBar(); countOnly = !countOnly; } private void ClearProgressBar() { //Setzt die Progressbar auf 0% zurück progressBar.Value = 0; progressBar.Refresh(); } #region Event Handler void EventHandler(long value) { //Die ProgressBar updaten progressBar.Value = Convert.ToInt32(value); progressBar.Refresh(); } #endregion } }