Создание меню без делегатов - C#
Формулировка задачи:
нужно сделать тоже самое но в одном классе
class Program { delegate void method(); static void Main(string[] args) { string[] items = { "Действие 1", "Действие 2", "Действие 3", "Выход" }; method[] methods = new method[] { Method1, Method2, Method3, Exit }; ConsoleMenu menu = new ConsoleMenu(items); int menuResult; do { menuResult = menu.PrintMenu(); methods[menuResult](); Console.WriteLine("Для продолжения нажмите любую клавишу"); Console.ReadKey(); } while (menuResult != items.Length - 1); } static void Method1() { Console.WriteLine("Выбрано действие 1"); } static void Method2() { Console.WriteLine("Выбрано действие 2"); } static void Method3() { Console.WriteLine("Выбрано действие 3"); } static void Exit() { Console.WriteLine("Приложение заканчивает работу!"); } } class ConsoleMenu { string[] menuItems; int counter = 0; public ConsoleMenu(string[] menuItems) { this.menuItems = menuItems; } public int PrintMenu() { ConsoleKeyInfo key; do { Console.Clear(); for (int i = 0; i < menuItems.Length; i++) { if (counter == i) { Console.BackgroundColor = ConsoleColor.Cyan; Console.ForegroundColor = ConsoleColor.Black; Console.WriteLine(menuItems[i]); Console.BackgroundColor = ConsoleColor.Black; Console.ForegroundColor = ConsoleColor.White; } else Console.WriteLine(menuItems[i]); } key = Console.ReadKey(); if (key.Key == ConsoleKey.UpArrow) { counter--; if (counter == -1) counter = menuItems.Length - 1; } if (key.Key == ConsoleKey.DownArrow) { counter++; if (counter == menuItems.Length) counter = 0; } } while (key.Key != ConsoleKey.Enter); return counter; } }
Решение задачи: «Создание меню без делегатов»
textual
Листинг программы
class Program { static void Method1() { Console.WriteLine("Выбрано действие 1"); } static void Method2() { Console.WriteLine("Выбрано действие 2"); } static void Method3() { Console.WriteLine("Выбрано действие 3"); } static void Exit() { Console.WriteLine("Приложение заканчивает работу!"); Environment.Exit(0); } static void methods (int counter) { if (counter == 0) Method1(); else if (counter == 1) Method2(); else if (counter == 2) Method3(); else Exit(); } static void Main(string[] args) { while (true) { int counter; string[] items = { "Действие 1", "Действие 2", "Действие 3", "Выход" }; PrintMenu(items, out counter); methods(counter); Console.ReadKey(); } } static int PrintMenu(string[] menuitems,out int counter) { counter = 0; ConsoleKeyInfo key; do { Console.Clear(); for (int i = 0; i < menuitems.Length; i++) { if (counter == i) { Console.BackgroundColor = ConsoleColor.White; Console.ForegroundColor = ConsoleColor.Black; Console.WriteLine(menuitems[i]); Console.BackgroundColor = ConsoleColor.Black; Console.ForegroundColor = ConsoleColor.White; } else Console.WriteLine(menuitems[i]); } key = Console.ReadKey(); if (key.Key == ConsoleKey.UpArrow) { counter--; if (counter == -1) counter = menuitems.Length - 1; } if (key.Key == ConsoleKey.DownArrow) { counter++; if (counter == menuitems.Length) counter = 0; } } while (key.Key != ConsoleKey.Enter); return counter; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д