我找不到的是,在C#控制台应用程序中是否可以编写某种层以覆盖现有窗口和文本,例如进度条或信息。
我看过一些PowerShell cmdlet,它们可以显示进度条,当进度条完成后,进度条消失,下面的任何东西都可见。我看到的进度条即使有额外的控制台输出导致窗口滚动也会保持在原位。
有人有什么想法吗?
编辑:这里是PowerShell使用Write-Progress进行操作的示例。
我看过一些PowerShell cmdlet,它们可以显示进度条,当进度条完成后,进度条消失,下面的任何东西都可见。我看到的进度条即使有额外的控制台输出导致窗口滚动也会保持在原位。
有人有什么想法吗?
编辑:这里是PowerShell使用Write-Progress进行操作的示例。
很可能他们正在使用控制台屏幕缓冲区。也就是说,他们保存当前的缓冲区并为应用程序创建一个新的缓冲区。应用程序完成后,它将原始屏幕缓冲区放回。
我几年前写过一篇关于在.NET中使用控制台屏幕缓冲区的文章。请查看http://www.devsource.com/article2/0,1895,2011496,00.asp
完整源代码可在http://www.mischel.com/pubs/consoledotnet/consoledotnet.zip找到。
Console.SetCursorPosition
做任何你想做的事情。通常,当某些东西似乎“在顶部”时,这只意味着程序正在存储重写之前所需的内存中的信息,以便重新创建它。 - Servy