.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
控件,也许 Button
的 Text
设置为 "Send"
这应该已经很接近你想去的地方了:
如果您不喜欢典型的 WinForms 控件,也可以尝试使用 WPF,但想法是一样的。
回到我在学校学习编程的那一天,我们使用 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
控件,也许Button
的Text
设置为 "Send"
这应该已经很接近你想去的地方了:
如果您不喜欢典型的 WinForms 控件,也可以尝试使用 WPF,但想法是一样的。