gpt4 book ai didi

c# - 如何将类似控制台的元素添加到 c# winforms 程序

转载 作者:可可西里 更新时间:2023-11-01 07:52:29 25 4
gpt4 key购买 nike

我有一个监视调试消息的程序,我尝试使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com