C#控制台程序的两个小问题
(1) 如何制作一个菜单
(2) 如何从子程序返回菜单
------解决思路----------------------
如果需要清除屏幕,你可以在主菜单之前写一句
Console.Clear();
通常还会用一些图形符号在菜单周围画出一些图形边框,制作好看一点的成块的文字显示。
你可以看看Console类,由于字符交互界面非常简单,所以基本上主要功能全都在那里了。例如可以通过 Console.ForegroundColor 获取和设置背景色,类似地还可以指定屏幕的的行列位置来显示(例如你需要显示一个跳动的百分率就需要在同一个位置、固定宽度的字符串不断刷新),等等类似的操作。
我不知道网上还能不能下载到 visual basic for dos 1.0 了。这是微软在1993年(记得好像是)以前开发的,可以看出“控制台程序时代的终结版本”是个什么样子的。支持全屏字符处理,包括鼠标支持,以及你所关心的菜单。
------解决思路----------------------
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();
}
}
}
}