using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Test_ChangeOrder { internal class MoveToTab { public List> Move(string toTab, List> allValues, string selectedValue) { //List> allValues = new List>(); List valuesTab1 = new List(); List valuesTab2 = new List(); string destinationValue = ""; string fileName = ""; string tempFileName = ""; valuesTab1.AddRange(allValues[0]); valuesTab2.AddRange(allValues[1]); var renameFiles = new RenameFiles(); if (toTab == "Tab 1") { //Übergebenen Wert aus der Liste von 'Tab 2' entfernen valuesTab2.Remove(selectedValue); //Zu verschiebende Datei nach 'C:\temp' verschieben, damit es kein Problem mit einer ev. vorhandenen Namensgleichheit gibt fileName = Path.GetFileName(selectedValue); tempFileName = "C:\\temp\\" + fileName; //Datei von Verzeichnis 'Tab 2' ins Verzeichnis 'C:\temp' verschieben File.Move(selectedValue, tempFileName); //Die Einträge der Liste von 'Tab 2' umbenennen renameFiles.Rename(valuesTab2); //Verzeichnis 'Tab 2' in Verzeichnis 'Tab 1' umbenennen if (valuesTab1.Count < 10) { destinationValue = Path.GetDirectoryName(selectedValue) + "\\" + "0" + (valuesTab1.Count + 1) + fileName.Remove(0, fileName.IndexOf(" ")); } else { destinationValue = Path.GetDirectoryName(selectedValue) + "\\" + (valuesTab1.Count + 1) + fileName.Remove(0, fileName.IndexOf(" ")); } destinationValue = destinationValue.Replace("Tab 2", "Tab 1"); //Übergebenen Wert in der Liste von 'Tab 1' ans Ende setzen valuesTab1.Add(destinationValue); //Datei von Verzeichnis 'Tab 2' ins Verzeichnis 'Tab 1' verschieben File.Move(tempFileName, destinationValue); } else { //Übergebenen Wert aus der Liste von 'Tab 1' entfernen valuesTab1.Remove(selectedValue); //Zu verschiebende Datei nach 'C:\temp' verschieben, damit es kein Problem mit einer ev. vorhandenen Namensgleichheit gibt fileName = Path.GetFileName(selectedValue); tempFileName = "C:\\temp\\" + fileName; //Datei von Verzeichnis 'Tab 1' ins Verzeichnis 'C:\temp' verschieben File.Move(selectedValue, tempFileName); //Die Einträge der Liste von 'Tab 1' umbenennen renameFiles.Rename(valuesTab1); //Verzeichnis 'Tab 1' in Verzeichnis 'Tab 2' umbenennen if (valuesTab2.Count < 10) { destinationValue = Path.GetDirectoryName(selectedValue) + "\\" + "0" + (valuesTab2.Count + 1) + fileName.Remove(0, fileName.IndexOf(" ")); } else { destinationValue = Path.GetDirectoryName(selectedValue) + "\\" + (valuesTab2.Count + 1) + fileName.Remove(0, fileName.IndexOf(" ")); } destinationValue = destinationValue.Replace("Tab 1", "Tab 2"); //Übergebenen Wert in der Liste von 'Tab 2' ans Ende setzen valuesTab2.Add(destinationValue); //Datei von Verzeichnis 'Tab 1' ins Verzeichnis 'Tab 2' verschieben File.Move(tempFileName, destinationValue); } //Liste von 'Tab 1' und von 'Tab 2' in 'AllValues' zusammenfassen allValues.Clear(); allValues.Add(valuesTab1); allValues.Add(valuesTab2); return allValues; } } }