public void Show() { do { PrintMenu(); var key = Console.ReadKey(true); switch (key.Key) { case ConsoleKey.DownArrow: _selectedOption = _options[(_options.IndexOf(_selectedOption) + 1) % (_options.Count)]; break; case ConsoleKey.UpArrow: var index = Math.Abs((_options.IndexOf(_selectedOption) - 1) % (_options.Count)); _selectedOption = _options[index]; break; case ConsoleKey.LeftArrow: _selectedOption.Left(); break; case ConsoleKey.RightArrow: _selectedOption.Right(); break; case ConsoleKey.Enter: _selectedOption.Execute(Arguments); break; case ConsoleKey.Escape: ShouldShow = false; break; } } while (ShouldShow); }
public Menu(string title, IEnumerable <MenuOption> options) { _title = title; _options = options.ToList(); ShouldShow = true; _selectedOption = _options[0]; }