当前位置: 代码迷 >> C# >> C#控制台程序的两个小疑点
  详细解决方案

C#控制台程序的两个小疑点

热度:81   发布时间:2016-05-05 03:58:09.0
C#控制台程序的两个小问题
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();
            }
        }
    }
}
  相关解决方案