C# .NET控制台应用程序,是否可以创建标签和区域?

C# .NET控制台应用程序,是否可以创建标签和区域?,c#,C#,是否可以让C#控制台应用程序将文本输出到已绘制的标签? 我见过一些原生Win32控制台应用程序可以做到这一点 因此,用户可以在屏幕上看到: 进度:1%或进度:50%,具体取决于标签的更新时间(标签进度保持在同一位置,而只有进度百分比的值得到更新) 而不是我目前知道的唯一方法,即console.writeLine,它将为每个进度更新生成一个单独的行 例如: 进展:1% 进度:2%您可以每次清除窗口并重新绘制屏幕,速度应该足够快,看起来事情已经发生了变化。是的,您可以这样做 您可以使用在写入后重新定

是否可以让C#控制台应用程序将文本输出到已绘制的标签? 我见过一些原生Win32控制台应用程序可以做到这一点

因此,用户可以在屏幕上看到:

进度:1%或进度:50%,具体取决于标签的更新时间(标签进度保持在同一位置,而只有进度百分比的值得到更新)

而不是我目前知道的唯一方法,即console.writeLine,它将为每个进度更新生成一个单独的行

例如:

进展:1%


进度:2%

您可以每次清除窗口并重新绘制屏幕,速度应该足够快,看起来事情已经发生了变化。

是的,您可以这样做

您可以使用在写入后重新定位光标

例如:

Console.WriteLine("Starting algorithm...");

int line = Console.CursorTop;
for (int i=0;i<100;++i)
{
    Console.SetCursorPosition(0,line);
    Console.Write("Progress is {0}%        ",i);  // Pad with spaces to make sure we cover old text
    Thread.Sleep(100);
}
Console.SetCursorPosition(0,line);    
Console.WriteLine("Algorithm Complete.       "); // Pad with spaces to make sure we cover old text
Console.WriteLine(“启动算法…”);
int line=Console.CursorTop;

对于(int i=0;i请看一看

,尽管我已经接受了答案:下面是下一个家伙的动态示例:

private static List<screenLocation> screenLocationsBasic = new List<screenLocation>();

public class screenLocation
{
    public int Left { get; set; }
    public int Top { get; set; }

    public screenLocation(int left, int top)
    {
        this.Left = left;
        this.Top = top; 
    }


}
然后,在数据呈现期间,您可以根据正在处理的项目仅更新该位置:

Console.SetCursorPosition(screenLocationsBoth[pos].Left, screenLocationsBoth[pos].Top);

然后,您只需传递pos(循环中项目的位置)。

“返回当天”,我们将输出退格字符,以便在“进度:”之后将光标移回标签。在更高级的终端上,我们会使用转义序列来定位光标。为什么不使用Windows任务调度程序每隔10毫秒左右启动一个控制台应用程序的新实例呢?对于匿名者-1,使用更快的机器:)@MusiGenesis-我写的控制台应用程序足够快,不需要进度更新…不是我-我喜欢以“3”结尾的代表分数。@ck:我写的控制台应用程序速度如此之快,以至于你根本看不到伪DOS窗口。:)
Console.SetCursorPosition(screenLocationsBoth[pos].Left, screenLocationsBoth[pos].Top);