Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Консольное меню на подобии C#


Автор: GoOFee 29.5.2016, 16:47
Доброго времени суток форумчане. Сразу скажу что данная тема аля "сделайте за меня" и в программирование я полное дно  smile . Учусь в авиационном институте, и в предметы вклинели зачем-то  программирование. С ним были связаны косвенно, но оно было и было его не много. И вот надо сделать такое задание. Есть консольное приложение в и необходимо реализовать меню, и меню на подобии DOS, т.е. переход по пунктам меню выполняется с помошью стрелочек. Необходимо все это дело организовать в виде функции. Чтобы в программе это все дело выглядило приблезительно так:
switch(MyFunction(Pmenu, x,y, cvet1, cvet2))
где myFunction- моя функция в которую передаются параметры Pmenu - пункты меню, х и у - координаты левого верхнего угла откуда будет идти отрисовка, cvet1 это цвет фона и цвет текста, cvet2- это цвет фона и цвет текста выбраного пункта меню(тут мнене совсем понятно как так, нам поидеи надо 4 цвета передавать 1 - для фона 2- для текста, 3 для фона выбраного пункта меню, 4 для текста выбраного пункта меню). И все это дело должно быть в рамочке какойнибуть... При всем том что обезательным параметром является только Pmenu все остольные якобы можно не в водить у них должно быть значение по умолчанию. Я вот тут накапал какой-то код в интернете однако он не совсем то что нужно, а разобратся в нем у меня не получается 
Код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace test
{
    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;
        }

    }
}

P.S. Извеняюсь что приходится просить, и отнимать личное время. :(

Да забыл сказать, сами пункты меню не чего не должны делать, т.е. по выбору какого-то из пунктов не чего не должно проихсодить... 

Автор: Uvs 13.10.2016, 07:32
Ужас, у вас с русским как-то не очень...

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Konsolnoye-menyu-na-podobii-C-id574af312ae2015995a8b4567#findElement_E7045_57ff0e5d86c4c524ca0e71cd_0

Автор: Uvs 13.10.2016, 07:32
Ужас, у вас с русским как-то не очень...

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Konsolnoye-menyu-na-podobii-C-id574af312ae2015995a8b4567#findElement_E7045_57ff0e5d86c4c524ca0e71cd_0

Автор: Uvs 13.10.2016, 07:32
Ужас, у вас с русским как-то не очень...

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Konsolnoye-menyu-na-podobii-C-id574af312ae2015995a8b4567#findElement_E7045_57ff0e5d86c4c524ca0e71cd_0

Автор: Uvs 13.10.2016, 07:32
Ужас, у вас с русским как-то не очень...

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Konsolnoye-menyu-na-podobii-C-id574af312ae2015995a8b4567#findElement_E7045_57ff0e5d86c4c524ca0e71cd_0

Автор: Uvs 13.10.2016, 07:32
Ужас, у вас с русским как-то не очень...

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Konsolnoye-menyu-na-podobii-C-id574af312ae2015995a8b4567#findElement_E7045_57ff0e5d86c4c524ca0e71cd_0

Автор: Uvs 13.10.2016, 07:33
точнее полнейший атас!

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Konsolnoye-menyu-na-podobii-C-id574af312ae2015995a8b4567#findElement_E7045_57ff0e8886c4c524d03ac47b_0

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)