示例#1
0
        public static MenuOptionKey?GetOptionKey(string menuLabel, IEnumerable <IMenuOption> menuOptions, MenuOptionKey?selectedOption, bool allowNull)
        {
            Setup(menuLabel, menuOptions, selectedOption);

            while (true)
            {
                var consoleKey = Console.ReadKey(true).Key;
                switch (consoleKey)
                {
                case ConsoleKey.Escape:
                case ConsoleKey.LeftArrow:
                    if (allowNull)
                    {
                        return(TearDown(null));
                    }
                    break;

                case ConsoleKey.Enter:
                case ConsoleKey.RightArrow:
                    return(TearDown(MenuOptions[CurrentOptionIndex].Key));

                default:
                    if (IsMoveKey(consoleKey))
                    {
                        continue;
                    }
                    if (TryParseToMenuOptionKey(consoleKey, out selectedOption) && MenuOptions.Any(mo => mo.Key == selectedOption))
                    {
                        return(TearDown(selectedOption));
                    }
                    break;
                }
            }
        }