Welcome

首页 / 软件开发 / .NET编程技术 / ConsoleApplication也精彩:一个控制台进度条的示例

ConsoleApplication也精彩:一个控制台进度条的示例2012-02-09 csdn jinjazz这年头记得习惯用ConsoleApplication的人恐怕也没有多少了,系统工具无论巨细,一律拖个巨大的form出来..其实控制台,写得好点也是很有趣的,比如这个效果

下面代码演示了如何在控制台下展示一个进度条的工作过程。原理很简单,就把他当成一张纸,不停的写了擦,擦了写,当中的技巧全靠想象力,因为这个类实在是太简单了。

using System;namespace ConsoleApplication11...{  class Program  ...{    /**//*     * ConsoleApplication也精彩。     * 作者    jinjazz     * 作者blog  http://blog.csdn.net/jinjazz     * 演示功能  windows控制台下的进度条     */    public static void Main()    ...{        bool isBreak = false;      ConsoleColor colorBack = Console.BackgroundColor;      ConsoleColor colorFore = Console.ForegroundColor;        //第一行信息      Console.WriteLine("*********** jinjazz now working...******");        //第二行绘制进度条背景      Console.BackgroundColor = ConsoleColor.DarkCyan;      for (int i = 0; ++i <= 25; )      ...{        Console.Write(" ");      }      Console.WriteLine(" ");      Console.BackgroundColor = colorBack;        //第三行输出进度      Console.WriteLine("0%");      //第四行输出提示,按下回车可以取消当前进度      Console.WriteLine("<Press Enter To Break.>");        //-----------------------上面绘制了一个完整的工作区域,下面开始工作        //开始控制进度条和进度变化      for (int i = 0; ++i <= 100; )      ...{        //先检查是否有按键请求,如果有,判断是否为回车键,如果是则退出循环        if (Console.KeyAvailable && System.Console.ReadKey(true).Key== ConsoleKey.Enter)        ...{          isBreak = true;          break;        }        //绘制进度条进度        Console.BackgroundColor = ConsoleColor.Yellow;//设置进度条颜色        Console.SetCursorPosition(i/4, 1);//设置光标位置,参数为第几列和第几行        Console.Write(" ");//移动进度条        Console.BackgroundColor = colorBack;//恢复输出颜色        //更新进度百分比,原理同上.        Console.ForegroundColor = ConsoleColor.Green;        Console.SetCursorPosition(0, 2);        Console.Write("{0}%", i);        Console.ForegroundColor = colorFore;        //模拟实际工作中的延迟,否则进度太快        System.Threading.Thread.Sleep(100);      }      //工作完成,根据实际情况输出信息,而且清楚提示退出的信息      Console.SetCursorPosition(0, 3);      Console.Write(isBreak ? "break!!!" : "finished.");      Console.WriteLine("           ");      //等待退出      Console.ReadKey(true);    }  }}