static void OneTableMenu(CalibrationTable CT, string path = null, bool ExitIfTrue = true) //меню работы с одной таблицей { int MenuChoice = 0, //выбранное доп. меню ItemChoice = 0; //выбранный пункт меню Menu.DoubleColor[] colorScheme = new Menu.DoubleColor[2]; colorScheme[0] = new Menu.DoubleColor(); colorScheme[1] = new Menu.DoubleColor(ConsoleColor.Yellow); Menu M = new Menu( new string[] { "Таблица: " + CT.CTid, "Опции (<Tab> для перехода)" }, new string[][] { new string[] { }, new string[] { } }, null, 0, colorScheme); do { M.Items = new string[][] { new string[] { "1. Отобразить таблицу", "2. Изменить базу уровней на " + ((CT.levelBase == LevelBase.Centimeters)?"мм":"см"), "3. Правка значений в таблице", "4. Проверить таблицу", "5. Исправить таблицу", "6. Сортировать", "7. Сохранить", "8. " + ((ExitIfTrue)?"Выход":"Назад") }, new string[] { "Исправлять непоследовательность объемов: " + ((RepairVolumeInconcictensy)?"да":"нет"), "Записывать заголовок Valcom: " + ((WriteValcomHeader)?"да":"нет") } }; M.MenuCicle(out MenuChoice, out ItemChoice); switch (MenuChoice) { case -1: //отмена меню break; case 0: switch (ItemChoice) { case 0: //1. Отобразить таблицу CT.ShowTable(); break; case 1: //2. Изменить базу уровней switch (CT.levelBase) { case LevelBase.Millimeters: CT.ChangeLevelBase(LevelBase.Centimeters); break; case LevelBase.Centimeters: CT.ChangeLevelBase(LevelBase.Millimeters); break; } break; case 2: //3. Правка значений в таблице ChangeTableMenu(CT); break; case 3: //3. Проверить таблицу CT.CheckTable(); Console.BackgroundColor = ConsoleColor.Black; Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("\n\nДля продолжения нажмите любую клавишу..."); Console.ReadKey(true); break; case 4: //4. Исправить таблицу CT.RepairTable(RepairVolumeInconcictensy); Console.BackgroundColor = ConsoleColor.Black; Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("\n\nДля продолжения нажмите любую клавишу..."); Console.ReadKey(true); break; case 5: //5. Сортировать CT.SortTable(); Console.BackgroundColor = ConsoleColor.Black; Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("\n\nДля продолжения нажмите любую клавишу..."); Console.ReadKey(true); break; case 6: //6. Сохранить TXTFile tf = new TXTFile( FileEventProcessor, FileEventProcessor, FileEventProcessor, FileEventProcessor); tf.WriteFile(CT, path, WriteValcomHeader); break; case 7: //7. Выход ExitApp = ExitIfTrue; break; default: //ошибка меню Console.Clear(); Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Ошибка в работе доп. 0 меню одной таблицы!!!\n\nНажмите любую клавишу для выхода..."); Console.ReadKey(true); ExitApp = true; break; } break; case 1: switch (ItemChoice) { case 0: Menu M4 = new Menu( new string[] { "Исправлять непоследовательность объемов?" }, new string[][] { new string[] { "Да", "Нет" } }, null, 0, new Menu.DoubleColor[] { new Menu.DoubleColor(ConsoleColor.Yellow) }); int MenuChoice4 = 0, ItemChoice4 = 0; M4.MenuCicle(out MenuChoice4, out ItemChoice4); switch (MenuChoice4) { case 0: switch (ItemChoice4) { case 0: //Да RepairVolumeInconcictensy = true; break; case 1: //Нет RepairVolumeInconcictensy = false; break; } break; } break; case 1: Menu M2 = new Menu( new string[] { "Записывать в выходные файлы заголовок Valcom?" }, new string[][] { new string[] { "Да", "Нет" } }, null, 0, new Menu.DoubleColor[] { new Menu.DoubleColor(ConsoleColor.Yellow) }); int MenuChoice2 = 0, ItemChoice2 = 0; int curItem2 = (WriteValcomHeader) ? 0 : 1; M2.MenuCicle(out MenuChoice2, out ItemChoice2, 0, curItem2); switch (MenuChoice2) { case 0: switch (ItemChoice2) { case 0: //Да WriteValcomHeader = true; break; case 1: //Нет WriteValcomHeader = false; break; } break; default: Console.Clear(); Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Ошибка в работе меню опций!!!\n\nНажмите любую клавишу для выхода..."); Console.ReadKey(true); ExitApp = true; break; } break; default: Console.Clear(); Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Ошибка в работе доп. 1 меню одной таблицы!!!\n\nНажмите любую клавишу для выхода..."); Console.ReadKey(true); ExitApp = true; break; } break; default: Console.Clear(); Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Ошибка в работе меню одной таблицы!!!\n\nНажмите любую клавишу для выхода..."); Console.ReadKey(true); ExitApp = true; break; } } while (!(MenuChoice == -1 || MenuChoice == 0 && ItemChoice == 7) && !ExitApp); }