.NET 控制台应用程序中的多次滚动 "windows"

Multiple scrolling "windows" in a .NET console app

回到我在学校学习编程的那一天,我们使用 Pascal 来学习基本概念。 现在,我正在使用 C# 尝试解决一些我认为很基本​​的问题,但我找不到解决方案。

我想要的是在控制台中有多个 "windows",我可以将输出写入其中,并且它们在这些 "virtual windows" 或 "areas" 中单独滚动而不影响其他。我也想要命令的输入行,但我认为这更容易实现。

一个例子可以是 IRC 聊天,我有一个区域用于聊天,一个区域用于在线用户,一个区域用于输入。

除了创建一个跟踪所有 "areas" 并执行大量 SetCursorPosition() 的 class 之外,还有其他方法吗??? .net 中没有内置的东西吗?

尽管 Console 允许您设置光标位置,但界面的设计旨在能够 "dump and forget" 输出。当有人调整控制台大小时,您的用户界面可能会中断。

但是在 Windows Forms 应用程序中,您可以通过以下方式轻松获得类似 IRC 的界面:

  • 添加一个SplitContainer,其中"panel2"可用于用户
  • 在"panel1"中添加另一个SplitContainer,将Oritentation设置为Horizontal
  • ListBox 控件添加到顶部和右侧面板,将 Dock 设置为 Fill
  • 在底部面板添加一个 TextBox 控件,也许 ButtonText 设置为 "Send"

这应该已经很接近你想去的地方了:

如果您不喜欢典型的 WinForms 控件,也可以尝试使用 WPF,但想法是一样的。