我有一个监视调试消息的程序,我尝试使用 TextBox 并将消息附加到它,但它不能很好地扩展,并且当消息数量变大时速度会变慢。然后,我尝试了一个 ListBox,但在添加新消息时,滚动会快速移动到顶部。它也不允许像文本框那样进行剪切和粘贴。
在 winforms 窗口中实现类似控制台的元素的更好方法是什么。
编辑: 我仍然希望能够嵌入像 visual studio 这样的输出窗口,但由于我无法找到一种简单的方法,因此我使用了两种解决方案。 除了使用有效的 RichTextBox 之外,您还必须时不时地清除它。我使用 pinvoke 的控制台。这是我为处理此问题而编写的一个小包装类。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
namespace Con
{
class Ext_Console
{
static bool console_on = false;
public static void Show(bool on,string title)
{
console_on = on;
if (console_on)
{
AllocConsole();
Console.Title = title;
// use to change color
Console.BackgroundColor = System.ConsoleColor.White;
Console.ForegroundColor = System.ConsoleColor.Black;
}
else
{
FreeConsole();
}
}
public static void Write(string output)
{
if (console_on)
{
Console.Write(output);
}
}
public static void WriteLine(string output)
{
if (console_on)
{
Console.WriteLine(output);
}
}
[DllImport("kernel32.dll")]
public static extern Boolean AllocConsole();
[DllImport("kernel32.dll")]
public static extern Boolean FreeConsole();
}
}
// example calls
Ext_Console.Write("console output ");
Ext_Console.WriteLine("console output");
Ext_Console.Show(true,"Title of console");
最佳答案
RichTextBox 有一个快速的 AppendText 方法。
并且它可以很好地处理大文本。
我相信它是满足您需求的最佳选择。
关于c# - 如何将类似控制台的元素添加到 c# winforms 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/252323/