Меню в консольном приложении - C#
Формулировка задачи:
Доброго времени суток. Вот необходимо сделать интерфейс в консольном приложении. Я его сделал с помощью Switch case, однако вот ту у меня всплыл вопрос. Необходимо сделать так как это было в DOS'е. Т.е. в меню я буду выбирать пункты не вводя цифры 1, 2 и т.д. а с помощью стрелок на клавиатуре (верх вниз). И откровенно говоря я понятия не имею как это сделать. Даже в каком направлении двигаться не знаю...
Решение задачи: «Меню в консольном приложении»
textual
Листинг программы
- using System.Text;
- using System;
- namespace Menu
- {
- 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;
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д