Меню в консольном приложении - C#

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток. Вот необходимо сделать интерфейс в консольном приложении. Я его сделал с помощью Switch case, однако вот ту у меня всплыл вопрос. Необходимо сделать так как это было в DOS'е. Т.е. в меню я буду выбирать пункты не вводя цифры 1, 2 и т.д. а с помощью стрелок на клавиатуре (верх вниз). И откровенно говоря я понятия не имею как это сделать. Даже в каком направлении двигаться не знаю...

Решение задачи: «Меню в консольном приложении»

textual
Листинг программы
  1. using System.Text;
  2. using System;
  3.  
  4. namespace Menu
  5. {
  6.     class Program
  7.     {
  8.         delegate void method();
  9.         static void Main(string[] args)
  10.         {
  11.            
  12.             string[] items = { "Действие 1", "Действие 2", "Действие 3", "Выход" };
  13.             method[] methods = new method[] { Method1, Method2, Method3, Exit};
  14.             ConsoleMenu menu = new ConsoleMenu(items);
  15.             int menuResult;
  16.             do
  17.             {
  18.                 menuResult = menu.PrintMenu();
  19.                 methods[menuResult]();
  20.                 Console.WriteLine("Для продолжения нажмите любую клавишу");
  21.                 Console.ReadKey();
  22.             } while (menuResult != items.Length - 1);
  23.         }
  24.  
  25.         static void Method1()
  26.         {
  27.             Console.WriteLine("Выбрано действие 1");
  28.         }
  29.         static void Method2()
  30.         {
  31.             Console.WriteLine("Выбрано действие 2");
  32.         }
  33.         static void Method3()
  34.         {
  35.             Console.WriteLine("Выбрано действие 3");
  36.         }
  37.         static void Exit()
  38.         {
  39.             Console.WriteLine("Приложение заканчивает работу!");
  40.         }
  41.     }
  42.  
  43.  
  44.     class ConsoleMenu
  45.     {
  46.         string[] menuItems;
  47.         int counter = 0;
  48.         public ConsoleMenu(string[] menuItems)
  49.         {
  50.             this.menuItems = menuItems;
  51.         }
  52.  
  53.         public int PrintMenu()
  54.         {
  55.             ConsoleKeyInfo key;
  56.             do
  57.             {
  58.                 Console.Clear();
  59.                 for (int i = 0; i < menuItems.Length; i++)
  60.                 {
  61.                     if (counter == i)
  62.                     {
  63.                         Console.BackgroundColor = ConsoleColor.Cyan;
  64.                         Console.ForegroundColor = ConsoleColor.Black;
  65.                         Console.WriteLine(menuItems[i]);
  66.                         Console.BackgroundColor = ConsoleColor.Black;
  67.                         Console.ForegroundColor = ConsoleColor.White;
  68.                     }
  69.                     else
  70.                         Console.WriteLine(menuItems[i]);
  71.  
  72.                 }
  73.                 key = Console.ReadKey();
  74.                 if (key.Key == ConsoleKey.UpArrow)
  75.                 {
  76.                     counter--;
  77.                     if (counter == -1) counter = menuItems.Length - 1;
  78.                 }
  79.                 if (key.Key == ConsoleKey.DownArrow)
  80.                 {
  81.                     counter++;
  82.                     if (counter == menuItems.Length) counter = 0;
  83.                 }
  84.             }
  85.             while (key.Key != ConsoleKey.Enter);
  86.             return counter;
  87.         }
  88.  
  89.     }
  90. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.133 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы