|
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();
}
}
}
}
|