
Menu.cs
By: a guest on
Jul 28th, 2010 | syntax:
C# | size: 1.61 KB | hits: 72 | expires: Never
using System;
namespace ConsoleMenu
{
class Menu
{
private int selectedIndex;
public string[] MenuItems { get; set; }
public Menu() : this(new string[] { "Play", "Credits", "Exit" }) { }
public Menu(string[] menuItems)
{
MenuItems = menuItems;
selectedIndex = 0;
}
public string ShowMenu()
{
Console.CursorVisible = false;
ConsoleKeyInfo key;
selectedIndex = 0;
do
{
Console.Clear();
PrintMenu();
key = Console.ReadKey();
if (key.Key == ConsoleKey.UpArrow)
MenuUp();
else if (key.Key == ConsoleKey.DownArrow)
MenuDown();
} while (key.Key != ConsoleKey.Enter);
Console.CursorVisible = true;
return MenuItems[selectedIndex];
}
private void PrintMenu()
{
foreach (string item in MenuItems)
Console.WriteLine("{0,-3}{1}", GetPrefix(MenuItems[selectedIndex] == item), item);
}
private string GetPrefix(bool selected)
{
return selected ? ">" : "";
}
private void MenuUp()
{
if (selectedIndex <= 0)
selectedIndex = MenuItems.Length - 1;
else
--selectedIndex;
}
private void MenuDown()
{
if (selectedIndex >= MenuItems.Length - 1)
selectedIndex = 0;
else
++selectedIndex;
}
}
}