在 Windows 窗体中创建类似控制台的信息显示

Posted

技术标签:

【中文标题】在 Windows 窗体中创建类似控制台的信息显示【英文标题】:Create a console like information display in a windows form 【发布时间】:2013-06-23 16:06:13 【问题描述】:

喂,

在我的 c# 应用程序中,我想制作一个框,我可以逐行放置文本以显示有关应用程序当前正在执行的操作的信息。我尝试在 Internet 上查找,因为这是与用户交互的一种非常常见的方式,并且我确信那里有很多示例。问题是,我不知道我应该如何称呼这种文本框。

我希望你们清楚我在寻找什么!

编辑 1

我想要一个像这个安装程序中那样的盒子。

(来源:softpedia-static.com)

【问题讨论】:

您可以有一个面板并显示和隐藏它,或者更好地使用 showdialog 创建一个关于表单。 你能贴一些代码吗? 可能是您将 AppendText() 附加到的多行文本框 您可以使用文本框,然后将其设为只读且不可编辑。您只需附加行 TextBox1.text += "More text" + " \r\n"; 可能重复:***.com/questions/2196097/… 【参考方案1】:

您可以使用多行文本框,然后将其设为只读且不可编辑。您只需附加该行并添加回车符 (\r\n)

      TextBox1.text += "More text" + " \r\n";

【讨论】:

我是一个 c++ 人,所以我不确定,但我怀疑它是否会通过添加文本自动滚动到最后一行。可能还需要检查滚动条是否已被用户移动,因此如果用户想阅读某些内容,它不会自动向下滚动。 这应该可以解决问题! @Edward 刚刚检查过它并自动向下滚动。关于用户阅读的内容,我并不担心这个应用程序,因为每 10 行之后它需要用户交互,所以如果他们愿意,他们将有足够的时间向上滚动。 感谢这个阿米特,有时您会为某个问题考虑一个非常困难的解决方案,而实际上有一个非常简单的解决方案! 这就是我们作为程序员倾向于做的事情,将事情过度复杂化。但十分之九的情况下,手头的问题有一个快速、简单的解决方案。祝你的程序好运!【参考方案2】:

AmitApollo 的回答很完美。

如果您担心盒子的外观,请尝试设置这些属性:

Font:如果您希望控制台看起来像 DOS 控制台,请尝试使用固定宽度的字体,例如 Consolas 或 Courier New。 BackColor:将其设置为灰色,以使框看起来像您图片中的框

另外,如果您想在框的开头添加新日志,请使用

txtConsole.text = "Log's text" + " \r\n" + txtConsole.text;

如果您希望框在添加新的时滚动到最后一行,check this post

【讨论】:

【参考方案3】:

我会给你一些提示,你可以继续研究,我不会给你一个提供你项目的完整工作代码的答案:

    创建用户界面 它将是一个多行文本框 将进度条设置为按照代码正在执行的操作进行 设置循环以显示进度条的进度

我会警告你这是相对困难的,所以你需要进一步研究。

许多人认为进度条会自动显示进度,这是不正确的。您可以采用两种方式,将计时器放在进度条上,或者将其设置为更新您工作所经历的每一行代码。我希望您现在开始了解在您的代码中创建这可能是多么困难。但请记住,困难并非不可能享受学习!

【讨论】:

感谢您的帖子!对我来说幸运的是,进度条在我的应用程序中并不太难。 (我已经有这部分工作)。这是因为应用程序将通过串行连接从外部 PCB 检索信息。所以我只需要使用以下代码在每个收到的行上更新它:progressBar1.PerformStep();但是,我可以看到,当您有不同类型的应用程序时,这样做可能会很痛苦。

以上是关于在 Windows 窗体中创建类似控制台的信息显示的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows 窗体中创建条形图

如何使用 C# 在 Windows 窗体中创建 F1 帮助

如何在 Windows 窗体应用程序中创建全局错误处理程序?

在 vb/c#.net 中创建一个连续的列表(像一个***)

在 Windows 窗体 C# 中创建 POI 映射。如何将图标(图像)放在地图上(图片框中的现有图像)?

C#窗体设计——多个窗体之间的调用