2016-12-19 147 views
0

回到学校学习编程的那天,我们使用Pascal学习基本概念。 现在,使用C#,我试图解决一些我认为是基本的东西,但我找不到解决方案。.NET控制台应用程序中的多个滚动“窗口”

我之后在控制台中有多个“窗口”,我可以将输出写入输出,它们在这些“虚拟窗口”或“区域”内单独滚动而不会影响其他窗口。我也想要一个命令输入行,但我认为这更容易实现。

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

除了创建一个跟踪所有“区域”并执行大量SetCursorPosition()的类之外,还有其他方法吗?这是不是有任何内置的.NET?

+1

没有内置的,请看看这个ncurses端口:http://www.mono-project.com/docs/tools+libraries/libraries/monocurses/ –

+0

如果这样的东西被内置到.Net中,会感到惊讶...它无益地鼓励使用控制台来处理在GUI应用程序中更容易和更好处理的事物。 – grek40

+0

谢谢你们!我会看看ncurses端口。 – greatwhitehat

回答

4

即使Console允许您设置光标位置,该界面旨在能够“转储并忘记”输出。有人调整控制台时,用户界面可能会中断。

然而,在Windows窗体应用程序,你可以很容易地得到一个IRC一样的界面:

  • 添加SplitContainer,其中“是Panel2”可用于用户
  • 在“PANEL1添加另一个SplitContainer ”,设置OritentationHorizontal
  • 添加ListBox控制的顶部和右侧面板,设置DockFill
  • 添加TextBox控制底板,或许与它TextButton“发送”

,你想这应该已经是非常接近:

enter image description here

你也可以如果你不喜欢典型的WinForms控件,那么可以使用WPF,但这个想法是一样的。

+0

好吧,我会看看ncurses,看看我能否使用它。否则,我想出一个控制台应用程序的想法,并与表单。谢谢! – greatwhitehat

+0

除非您已经熟悉WinForms并且需要快速结果,否则我总是推荐WPF用于新项目的WinForms。 – grek40

相关问题