ConsoleApplication也精彩,一个控制台进度条的示例。

这年头记得习惯用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 ++ <=   25 ; )
            
{
                Console.Write(
"   " );
            }

            Console.WriteLine(
"   " );
            Console.BackgroundColor 
=  colorBack;

            
// 第三行输出进度
            Console.WriteLine( " 0% " );
            
// 第四行输出提示,按下回车可以取消当前进度
            Console.WriteLine( " <Press Enter To Break.> " );

            
// -----------------------上面绘制了一个完整的工作区域,下面开始工作

            
// 开始控制进度条和进度变化
             for  ( int  i  =   0 ++ <=   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 );
        }

    }

}

原文地址:https://www.cnblogs.com/cl1024cl/p/6204944.html