我的dll有一些实时消息,使用以下方式打印出来:
Console.Writeline("XYZ Message");
我在C#Windows窗体应用程序中引用了这个dll。 然后使用以下方式实时打印消息:
public MyClientMainForm()
{
AllocConsole();
InitializeComponent();
}
但是使用这种方式我正在启动一个单独的控制台窗口来显示消息。
我希望将这些消息重定向到Winform中的Listbox
,而不是单独的控制台窗口。
有人可以用一个简单的例子来帮助我。
答案 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; }
}
}