Меню в консольном приложении - 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;
        }
 
    }
}

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


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

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

15   голосов , оценка 4.133 из 5
Похожие ответы