首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

Console 應用程式也能很精彩:打造控制台進度條完整範例

     編輯:關於.NET

為什麼還要寫 Console App?

這年頭習慣用 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.SetCursorPosition:精確控制游標位置,實現原地覆寫。
  • Console.BackgroundColor / ForegroundColor:變換顏色製造視覺對比。
  • Console.KeyAvailable + ReadKey(true):非阻塞式檢測使用者輸入,支援即時取消。
  • Thread.Sleep:模擬真實工作負載,讓進度條節奏可被肉眼捕捉。

延伸應用建議

這個極簡範例可以輕易擴充為:多任務並行進度顯示、帶顏色階層的日誌輸出、互動式選單系統等。下次需要快速驗證演算法或撰寫部署腳本時,不妨試試 Console App——它比你想像中更強大。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved