我想让我的菜单重复,所以在选择并执行选项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(){ } Listteams; 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',代码将在循环中执行.希望有所帮助.
现在有一个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(); }
在操作中,您可以放置任何方法以在选中时运行
这将输出这样的东西
FOO
酒吧
选择一个选项:
请参阅:http://msdn.microsoft.com/en-us/library/471w8d85(v=vs.110).aspx
将主要功能替换为:
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键.每次读取密钥时,您都可以执行所选的操作.