C#控制台程序的两个小问题 |
|
菜单控件啊。。。。。。。。。。。。。。。。。。。。。
|
|
菜单可以这样写
for (; ; ) { Console.Write("请选择:0.最新报告 1.最近报告 2.全部报告 3.Paper 4.计划 ESC.结束...."); ConsoleKeyInfo k; k = Console.ReadKey(true); Console.WriteLine(); if (k.KeyChar == 27) return; switch (k.KeyChar) { case (char)27: return; case ""0"": Console.WriteLine("选择了0"); break; case ""1"": Method1(); break; } } 当从 Method1方法出来之后,会自动回到主菜单。 |
|
20分 |
如果需要清除屏幕,你可以在主菜单之前写一句
Console.Clear(); 通常还会用一些图形符号在菜单周围画出一些图形边框,制作好看一点的成块的文字显示。 你可以看看Console类,由于字符交互界面非常简单,所以基本上主要功能全都在那里了。例如可以通过 Console.ForegroundColor 获取和设置背景色,类似地还可以指定屏幕的的行列位置来显示(例如你需要显示一个跳动的百分率就需要在同一个位置、固定宽度的字符串不断刷新),等等类似的操作。 我不知道网上还能不能下载到 visual basic for dos 1.0 了。这是微软在1993年(记得好像是)以前开发的,可以看出“控制台程序时代的终结版本”是个什么样子的。支持全屏字符处理,包括鼠标支持,以及你所关心的菜单。 |
80分 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication2 { class Program { static int x = 0; static string[] menuitems = { "hello", "world", "exit" }; static void Main(string[] args) { drawmenu(); while (true) { var ki = Console.ReadKey(); if (ki.Key == ConsoleKey.UpArrow) { x--; if (x < 0) x = menuitems.Count() - 1; } if (ki.Key == ConsoleKey.DownArrow) { x++; if (x > menuitems.Count() - 1) x = 0; } drawmenu(); } } private static void drawmenu() { Console.Clear(); for (int i = 0; i < menuitems.Count(); i++) { if (i == x) { Console.BackgroundColor = ConsoleColor.Gray; Console.ForegroundColor = ConsoleColor.Black; } Console.WriteLine(menuitems[i]); Console.ResetColor(); } } } } |