這年頭習慣用 Console Application 的開發者似乎不多了,不管大小工具都愛拉一個巨大的 Form 出來。其實控制台若寫得好,同樣可以很有趣、很實用——就像下面這個進度條效果:

實作邏輯非常直觀:將主控台視為一張紙,透過不斷在同一位置覆寫字元來產生動畫效果。關鍵技巧全靠想像力,因為程式碼本身極其簡單。
using System;
namespace ConsoleApplication11
{
class Program
{
///
/// Console 應用程式也精彩 - 控制台進度條示範
/// 作者:jinjazz
/// 部落格:https://blog.csdn.net/jinjazz
///
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%");
// 第四行:提示訊息,按 Enter 可取消
Console.WriteLine("");
// ----------------------- 上方繪製完整工作區,下方開始實際工作 -----------------------
// 控制進度條與百分比變化
for (int i = 0; ++i <= 100; )
{
// 檢查是否有按鍵,若為 Enter 則中斷
if (Console.KeyAvailable && 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);
}
}
}
這個極簡範例可以輕易擴充為:多任務並行進度顯示、帶顏色階層的日誌輸出、互動式選單系統等。下次需要快速驗證演算法或撰寫部署腳本時,不妨試試 Console App——它比你想像中更強大。