7

コンソール アプリケーションがあり、カウントダウン タイマーを作成したいと考えています。これは私が試したことです:

    static void Main(string[] args)
    {
        for (int a = 10; a >= 0; a--)
        {
            Console.Write("Generating Preview in {0}", a);
            System.Threading.Thread.Sleep(1000);
            Console.Clear();
        }
    }

このコードは、いくつかの状況で機能します。ただし、問題は、コンソール ウィンドウ全体がクリアされ、タイマーの上に文字がある場合は使用できないことです。

4

4 に答える 4

13

コンソールに出力 "\r"すると、カーソルが現在の行の先頭に戻るため、次のように動作します。

for (int a = 10; a >= 0; a--)
{
    Console.Write("\rGenerating Preview in {0:00}", a);
    System.Threading.Thread.Sleep(1000);
} 
于 2013-08-01T21:29:56.300 に答える
1

Console.SetCursorPositionおよび関連するものは、おそらく探しているものです。Write現在の位置を取得し、 /WriteLine呼び出しごとに再設定します。

何かのようなもの:

var origRow = Console.CursorTop;
for (int a = 10; a >= 0; a--)
{
    Console.SetCursorPosition(0, origRow);
    Console.Write("Generating Preview in {0}", a);
    System.Threading.Thread.Sleep(1000);
}
Console.SetCursorPosition(0, origRow);
Console.Write("Generating Preview done.....");
于 2013-08-01T21:29:42.143 に答える