Don't like ads? PRO users don't see any ads ;-)
Guest

Menu.cs

By: a guest on Jul 28th, 2010  |  syntax: C#  |  size: 1.61 KB  |  hits: 72  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. using System;
  2.  
  3. namespace ConsoleMenu
  4. {
  5.     class Menu
  6.     {
  7.         private int selectedIndex;
  8.         public string[] MenuItems { get; set; }
  9.  
  10.         public Menu() : this(new string[] { "Play", "Credits", "Exit" }) { }
  11.  
  12.         public Menu(string[] menuItems)
  13.         {
  14.             MenuItems = menuItems;
  15.             selectedIndex = 0;
  16.         }
  17.  
  18.         public string ShowMenu()
  19.         {
  20.             Console.CursorVisible = false;
  21.             ConsoleKeyInfo key;
  22.             selectedIndex = 0;
  23.             do
  24.             {
  25.                 Console.Clear();
  26.                 PrintMenu();
  27.                 key = Console.ReadKey();
  28.                 if (key.Key == ConsoleKey.UpArrow)
  29.                     MenuUp();
  30.                 else if (key.Key == ConsoleKey.DownArrow)
  31.                     MenuDown();
  32.             } while (key.Key != ConsoleKey.Enter);
  33.             Console.CursorVisible = true;
  34.             return MenuItems[selectedIndex];
  35.         }
  36.  
  37.         private void PrintMenu()
  38.         {
  39.             foreach (string item in MenuItems)
  40.                 Console.WriteLine("{0,-3}{1}", GetPrefix(MenuItems[selectedIndex] == item), item);
  41.         }
  42.  
  43.         private string GetPrefix(bool selected)
  44.         {
  45.             return selected ? ">" : "";
  46.         }
  47.  
  48.         private void MenuUp()
  49.         {
  50.             if (selectedIndex <= 0)
  51.                 selectedIndex = MenuItems.Length - 1;
  52.             else
  53.                 --selectedIndex;
  54.         }
  55.  
  56.         private void MenuDown()
  57.         {
  58.             if (selectedIndex >= MenuItems.Length - 1)
  59.                 selectedIndex = 0;
  60.             else
  61.                 ++selectedIndex;
  62.         }
  63.     }
  64. }