当前我想显示以下变量
总项目
总执行力
完成状态
using System;
namespace ConsoleTest
{
class Program
{
static void Main(string[] args)
{
int TotalValue = 250; // Total Item Example
int TotalExecution = 0;
bool Finish_Status = false;
for (int i = 0; i < TotalValue; ++i)
{
//Do Work Here
System.Threading.Thread.Sleep(10); // Example Work
TotalExecution++;
if (TotalValue - TotalExecution == 0)
{
Finish_Status = true;
}
Console.Clear();
Console.Write("Progression Info\n Total Item : {0}\n Execution Total : {1}\n Remaining : {2}\n Finish_Status : {3}", TotalValue,TotalExecution, TotalValue - TotalExecution, Finish_Status); // Display Information To Console
}
Console.ReadLine();
}
}
}
结果很好,但是我想知道是否有更有效的方法,最好不使用Console.Clear();进行更新
答案 0 :(得分:2)
您可以使用Console.SetCursorPosition
在每次写入时在控制台缓冲区周围移动光标,而不是每次都清除控制台。
例如:
using System;
namespace ConsoleTest
{
class Program
{
static void Main(string[] args)
{
int TotalValue = 250; // Total Item Example
int TotalExecution = 0;
bool Finish_Status = false;
Console.Write("Progression Info\n Total Item : \n Execution Total : \n Remaining : \n Finish_Status : ");
for (int i = 0; i < TotalValue; ++i)
{
//Do Work Here
System.Threading.Thread.Sleep(10); // Example Work
TotalExecution++;
if (TotalValue - TotalExecution == 0)
{
Finish_Status = true;
}
Console.SetCursorPosition(26, 1);
Console.Write(TotalValue);
Console.SetCursorPosition(31, 2);
Console.Write(TotalExecution);
Console.SetCursorPosition(25, 3);
Console.Write(TotalValue - TotalExecution);
Console.SetCursorPosition(29, 4);
Console.Write(Finish_Status);
}
Console.ReadLine();
}
}
}
免责声明:显然,以上内容很简单,可以从大量的改进中受益,但您明白了。
答案 1 :(得分:0)
欢迎kepanin_lee
我认为您正在寻找类似的东西。
//Console.Clear()
Console.Write(vbCr & "Progression Info\n...
仅从vbCr
开始,通过这种方式,您可以强制从同一行的开头开始,因此仅覆盖最后一行,而不会清除所有屏幕。