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 static System.Windows.Forms.VisualStyles.VisualStyleElement; namespace Test_ChangeOrder { 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 = ""; if (((AssemblyCopyrightAttribute)attributes[0]).Copyright.Contains("Copyright © ")) { startYear = ((AssemblyCopyrightAttribute)attributes[0]).Copyright.Replace("Copyright © ", ""); while (startYear.StartsWith(" ")) { startYear = startYear.Remove(0, 1); } if (startYear.Contains("-")) { startYear = startYear.Remove(startYear.IndexOf("-")); } else { 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 { string temp = ((AssemblyCopyrightAttribute)attributes[0]).Copyright; string start = temp.Remove(temp.IndexOf(startYear) - 1); string end = (temp.Remove(0, temp.IndexOf(" by"))); return String.Concat(start, " ", startYear, "-", currentYear, end); } } #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(); //TestToTab("Tab 2"); } enum MovementDirection { Up, Down } enum Moved { Yes, No } enum CurrentTab { Tab1, Tab2 } string path = @"C:\CAD\Git-WorkRepository\VisualStudio\_TEST\Test_ChangeOrder.git\Daten\"; string[] subfolders = new string[] { "Tab 1", "Tab 2" }; List ValuesTab1 { set; get; } List ValuesTab2 { set; get; } //private void TestToTab(string toTab) //{ // List> tab = new List>(); // string selectedTab = ""; // int selectedTabIndex = 0; // int selectedRow = 0; // List dataGridView = new List(); // for (int i = 0; i < tabControl.TabCount; i++) // { // List tabValues = new List(); // tab.Add(tabValues); // DataGridView dataGridViewName = new DataGridView(); // dataGridView.Add(dataGridViewName); // } // if (tabControl.SelectedTab.Text != toTab) // { // selectedTab = tabControl.SelectedTab.ToString(); // selectedTabIndex = tabControl.SelectedIndex; // //value = dataGridViewTab1[1, dataGridViewTab1.CurrentCellAddress.Y].Value.ToString(); // } // else // { // MessageBox.Show("Wert kann nicht in den gleichen Bereich verschoben werden.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); // } //} private void buttonReadData_Click(object sender, EventArgs e) { //Lies Daten vom Laufwerk ValuesTab1 = ReadFilesFromFolder(path + subfolders[0]); //Daten vom Verzeichnis 'Tab 1' lesen und der Variablen 'ValuesTab1' zuordnen ValuesTab2 = ReadFilesFromFolder(path + subfolders[1]); //Daten von Verzeichnis 'Tab 2' lesen und der Variablen 'ValuesTab2' zuordnen WriteValuesToDataGridView(ValuesTab1, ValuesTab2); //Werte in 'dataGridViewTab1' und 'dataGridViewTab2' schreiben } private void buttonCancel_Click(object sender, EventArgs e) { this.Close(); } private void buttonUp_Click(object sender, EventArgs e) { //Eine Zeile nach oben verschieben MoveRow(MovementDirection.Up); } private void buttonDown_Click(object sender, EventArgs e) { //Eine Zeile nach unten verschieben MoveRow(MovementDirection.Down); } private void buttonToTab1_Click(object sender, EventArgs e) { //Nach Tab 1 verschieben string value = ""; List> allValues = new List>(); allValues.Add(ValuesTab1); allValues.Add(ValuesTab2); if (tabControl.SelectedTab.Text == "Tab 2") { value = dataGridViewTab2[1, dataGridViewTab2.CurrentCellAddress.Y].Value.ToString(); var moveToTab = new MoveToTab(); allValues = moveToTab.Move("Tab 1", allValues, value); ValuesTab1 = allValues[0]; //Werte von 'Tab 1' setzen ValuesTab2 = allValues[1]; //Werte von 'Tab 2' setzen WriteValuesToDataGridView(ValuesTab1, ValuesTab2); //Werte von 'ValuesTab1' in 'dataGridViewTab1' schreiben SetRowSelectionTab(CurrentTab.Tab2, 0); //Aktuelle Zeile selektieren } else { MessageBox.Show("Wert kann nicht in den gleichen Bereich verschoben werden.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } private void buttonToTab2_Click(object sender, EventArgs e) { //Nach Tab 2 verschieben string value = ""; List> allValues = new List>(); allValues.Add(ValuesTab1); allValues.Add(ValuesTab2); if (tabControl.SelectedTab.Text == "Tab 1") { value = dataGridViewTab1[1, dataGridViewTab1.CurrentCellAddress.Y].Value.ToString(); var moveToTab = new MoveToTab(); allValues = moveToTab.Move("Tab 2", allValues, value); ValuesTab1 = allValues[0]; //Werte von 'Tab 1' setzen ValuesTab2 = allValues[1]; //Werte von 'Tab 2' setzen WriteValuesToDataGridView(ValuesTab1, ValuesTab2); //Werte von 'ValuesTab1' in 'dataGridViewTab1' schreiben SetRowSelectionTab(CurrentTab.Tab1, 0); //Aktuelle Zeile selektieren } else { MessageBox.Show("Wert kann nicht in den gleichen Bereich verschoben werden.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } private void buttonAddTab_Click(object sender, EventArgs e) { //TODO: Einen neuen Tab erzeugen //Maximal 10 Tabs möglich } private void buttonRemoveTab_Click(object sender, EventArgs e) { //TODO: Den letzten TAB entfernen //Tab darf keine Elemente mehr enthalten //Es muss mindestens 1 Tab erhalten bleiben } private List ReadFilesFromFolder(string folder) { List files = new List(); //Dateien einlesen if (Directory.GetFiles(folder).Length < 1) { //Keine Dateien vorhanden return files; } else { //Dateien vorhanden foreach(string file in Directory.GetFiles(folder)) { files.Add(file); } return files; } } private void WriteValuesToDataGridView(List valuesTab1, List valuesTab2) { //Werte von 'ValuesTab1' in 'dataGridViewTab1' schreiben dataGridViewTab1.RowCount = valuesTab1.Count; for (int i = 0; i < valuesTab1.Count; i++) { dataGridViewTab1[0, i].Value = i + 1; dataGridViewTab1[1, i].Value = valuesTab1[i]; } //Werte von 'ValuesTab2' in 'dataGridViewTab2' schreiben dataGridViewTab2.RowCount = valuesTab2.Count; for (int i = 0; i < valuesTab2.Count; i++) { dataGridViewTab2[0, i].Value = i + 1; dataGridViewTab2[1, i].Value = valuesTab2[i]; } } private void MoveRow(MovementDirection movmentDirection) { if (movmentDirection == MovementDirection.Up) { //Eine Zeile nach oben verschieben var moveUp = new MoveUp(); if (tabControl.SelectedTab.Text == "Tab 1") { ValuesTab1 = moveUp.Move(ValuesTab1, dataGridViewTab1.CurrentCellAddress.Y); //Die Werte und die selektierte Zeile übergeben WriteValuesToDataGridView(ValuesTab1, ValuesTab2); //Werte von 'ValuesTab1' in 'dataGridViewTab1' schreiben SetRowSelectionTab(CurrentTab.Tab1, moveUp.SelectedRow); //Aktuelle Zeile selektieren } else { ValuesTab2 = moveUp.Move(ValuesTab2, dataGridViewTab2.CurrentCellAddress.Y); //Die Werte und die selektierte Zeile übergeben WriteValuesToDataGridView(ValuesTab1, ValuesTab2); //Werte von 'ValuesTab2' in 'dataGridViewTab2' schreiben SetRowSelectionTab(CurrentTab.Tab2,moveUp.SelectedRow); //Aktuelle Zeile selektieren } } else { //Eine Zeile nach unten verschieben var moveDown = new MoveDown(); if (tabControl.SelectedTab.Text == "Tab 1") { ValuesTab1 = moveDown.Move(ValuesTab1, dataGridViewTab1.CurrentCellAddress.Y); //Die Werte und die selektierte Zeile übergeben WriteValuesToDataGridView(ValuesTab1, ValuesTab2); //Werte von 'ValuesTab1' in 'dataGridViewTab1' schreiben SetRowSelectionTab(CurrentTab.Tab1, moveDown.SelectedRow); //Aktuelle Zeile selektieren } else { ValuesTab2 = moveDown.Move(ValuesTab2, dataGridViewTab2.CurrentCellAddress.Y); //Die Werte und die selektierte Zeile übergeben WriteValuesToDataGridView(ValuesTab1, ValuesTab2); //Werte von 'ValuesTab2' in 'dataGridViewTab2' schreiben SetRowSelectionTab(CurrentTab.Tab2, moveDown.SelectedRow); //Aktuelle Zeile selektieren } } } private void SetRowSelectionTab(CurrentTab tab, int selectedRow) { if (tab == CurrentTab.Tab1) { //'Tab 1' ist ausgewählt dataGridViewTab1.CurrentCell = dataGridViewTab1[0, selectedRow]; //Aktuelle Zeile setzen dataGridViewTab1.Rows[dataGridViewTab1.CurrentCellAddress.Y].Selected = true; //Die aktive Zeile selektieren } else { //'Tab 2' ist ausgewählt dataGridViewTab2.CurrentCell = dataGridViewTab2[0, selectedRow]; //Aktuelle Zeile setzen dataGridViewTab2.Rows[dataGridViewTab2.CurrentCellAddress.Y].Selected = true; //Die aktive Zeile selektieren } } } }