如何将Console.Writeline()消息从dll重定向到Winform列表框

时间:2017-01-09 05:22:54

标签: c# winforms listbox

我的dll有一些实时消息,使用以下方式打印出来:

Console.Writeline("XYZ Message");

我在C#Windows窗体应用程序中引用了这个dll。 然后使用以下方式实时打印消息:

public MyClientMainForm()
{
  AllocConsole();
  InitializeComponent();
}

但是使用这种方式我正在启动一个单独的控制台窗口来显示消息。

我希望将这些消息重定向到Winform中的Listbox,而不是单独的控制台窗口。

有人可以用一个简单的例子来帮助我。

2 个答案:

答案 0 :(得分:0)

Redirect Console.WriteLine to String 也许,通过这种方式,您可以将输出转换为String,并从String转换为ListBox,使用listBox1.Items.Add(stringName);

答案 1 :(得分:-1)

另一种可能更简洁的方法是使用您自己的日志将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; }
}
}