控制台应用程序中的简单菜单

我想让我的菜单重复,所以在选择并执行选项1之后,它将返回菜单并要求选择另一个选项

class Program { static void Main(string[] args) { FootballTeams MyCode = new FootballTeams(); MyCode.ListInit(); MyCode.DisplayMenu(); MyCode.AddTeams(); Console.ReadLine(); MyCode.ListInit(); MyCode.DisplayMenu(); MyCode.DisplayTeams(); Console.ReadLine(); MyCode.ListInit(); MyCode.DisplayMenu(); MyCode.Delete(); Console.ReadLine(); MyCode.ListInit(); MyCode.DisplayMenu(); MyCode.TeamSearch(); Console.ReadLine(); } } 

以下是取出内容的方法:

 class FootballTeams { public FootballTeams(){ } List teams; public void ListInit() public void DisplayMenu() { Console.WriteLine("Football Manager"); Console.WriteLine(); Console.WriteLine("1. Add a Football team"); Console.WriteLine("2. List the Football teams"); Console.WriteLine("3. Search for a Football team"); Console.WriteLine("4. Delete a team"); Console.ReadLine(); } public void AddTeams() { Console.WriteLine("Enter a team to be added: "); string userinput = Console.ReadLine(); if (teams.Count < 10) { if (userinput != "Colchester") { teams.Add(userinput); foreach (var item in teams) Console.Write(item.ToString() + " "); } else Console.Write("NOT ALLOWED"); } else Console.Write("MAXIMUM LIMIT REACHED"); } public void DisplayTeams() { foreach(var item in teams) Console.Write(item.ToString() + " "); } public void TeamSearch() { Console.WriteLine("Please enter the team you wish to search for: "); string userinput = Console.ReadLine(); if (teams.Contains(userinput)) Console.WriteLine("Success, team " + userinput); } public void Delete() { Console.WriteLine("Enter a team you wish to delete: "); string userinput = Console.ReadLine(); teams.Remove(userinput); foreach (var item in teams) Console.Write(item.ToString() + " "); } 

我知道我的措辞很差,所以我希望有人理解我的要求:P

您可以使用do while循环对DispalyMenu()方法进行一些修改并返回如下结果

 static public int DisplayMenu() { Console.WriteLine("Football Manager"); Console.WriteLine(); Console.WriteLine("1. Add a Football team"); Console.WriteLine("2. List the Football teams"); Console.WriteLine("3. Search for a Football team"); Console.WriteLine("4. Delete a team"); Console.WriteLine("5. Exit"); var result = Console.ReadLine(); return Convert.ToInt32(result); } 

并在你的Main()方法中写这个

 int userInput = 0; do { userInput = DisplayMenu(); }while(userInput!=5); 

因此,暂时用户不输入’5’,代码将在循环中执行。 希望有所帮助。

请参阅: http : //msdn.microsoft.com/en-us/library/471w8d85(v=vs.110).aspx

将主要function替换为:

 static void Main(string[] args) { FootballTeams MyCode = new FootballTeams(); MyCode.ListInit(); ConsoleKeyInfo cki; do { MyCode.DisplayMenu(); cki = Console.ReadKey(false); // show the key as you read it switch (cki.KeyChar.ToString()) { case "1": MyCode.AddTeams(); break; case "2": MyCode.DisplayTeams(); break; // etc.. } } while (cki.Key != ConsoleKey.Escape); } 

基本上,你需要循环,直到他们按下Escape键。 每次读取密钥时,您都可以执行所选的操作。

现在有一个nuget包

https://github.com/splttingatms/EasyConsole

添加nuget包之后,Menu可以通过以下方式实现,这是一个非常基本的选项

 static void Main(string[] args) { var menu = new EasyConsole.Menu() .Add("foo", () => Console.WriteLine("foo selected")) .Add("bar", () => Console.WriteLine("bar selected")); menu.Display(); } 

在操作中,您可以放置​​任何方法以在选中时运行

这将输出这样的东西

  1. FOO
  2. 酒吧

选择一个选项: