C# 如何将另一个类的方法的控制台输出打印到Winform Listbox?

C# 如何将另一个类的方法的控制台输出打印到Winform Listbox?,c#,.net,winforms,listbox,C#,.net,Winforms,Listbox,我目前正在制作一个Windows窗体应用程序。它所做的是将一个2D数组作为输入并执行一个方法(比如M)。我的表单有一个列表框,我想用它作为消息日志。调用方法M时(使用表单中的按钮),使用Console.WriteLine将各行打印到控制台,以显示当前进度。我想让这些行以消息的形式显示在表单中的列表框中,以便了解当前的进度。我怎样才能做到这一点?任何帮助都将不胜感激 我还从stackoverflow上的现有答案中找到了下面的代码,该答案从TextWriter派生了一个新类。但我不确定它是否符合我所

我目前正在制作一个Windows窗体应用程序。它所做的是将一个2D数组作为输入并执行一个方法(比如M)。我的表单有一个列表框,我想用它作为消息日志。调用方法M时(使用表单中的按钮),使用Console.WriteLine将各行打印到控制台,以显示当前进度。我想让这些行以消息的形式显示在表单中的列表框中,以便了解当前的进度。我怎样才能做到这一点?任何帮助都将不胜感激

我还从stackoverflow上的现有答案中找到了下面的代码,该答案从TextWriter派生了一个新类。但我不确定它是否符合我所寻找的目的

public class ListBoxWriter : TextWriter
{
    private ListBox list;
    private StringBuilder content = new StringBuilder();

    public ListBoxWriter(ListBox list)
    {
        this.list = list;
    }

    public override void Write(char value)
    {
        base.Write(value);
        content.Append(value);
        if (value == '\n')
        {
            list.Items.Add(content.ToString());
            content = new StringBuilder();
        }
    }

    public override Encoding Encoding
    {
        get { return System.Text.Encoding.UTF8; }
    }
}

您需要访问希望输出的表单实例。因此需要在类之间传递实例。请参阅我的双表单项目,其中我将form1的实例传递给form2。使用控制台作为两个表单之间通信的机制要困难得多,也更不可靠,然后只编写应用程序使一个表单使用另一个directlyChange
console.WriteLine()
listBox1.Items.Add()
?…有什么问题吗?请注意,问题不是我无法将文本打印到我的列表框。问题是当在我的表单中调用另一个类的方法打印的实时文本时,如何将其访问到控制台。如果某个类正在生成文本,则使其引发自定义事件以传递信息。然后,您可以有多个订阅服务器来订阅该事件,每个接收者对该信息执行不同的操作。