当前位置: 首页 > 编程语言 > C#

将控制台输出重定向到winformsListBoxshare

时间:2023-04-10 15:51:14 C#

将控制台输出重定向到winformsListBox我目前在Windows窗体应用程序中使用该库的过程仍然需要访问控制台输出。(要显示在List/RichText框中)我注意到我可以将控制台的标准覆盖到TextWriter,但是如何将这些数据显示到显示器中。我尝试做一些事情publicpartialclassForm1:Form{TimerT;内存流内存;StreamWriter编写器;publicForm1(){InitializeComponent();内存=新内存流(1000);writer=newStreamWriter(mem);Console.SetOut(编写器);T=新定时器();T.Interval=250;//是的,这可能太短了。T.Tick+=newEventHandler(T_Tick);T.开始();Console.WriteLine("输出");Console.WriteLine("AnotherLine");}voidT_Tick(objectsender,EventArgse){strings=Encoding.Default.GetString(mem.ToArray());string[]Lines=s.Split(Environment.NewLine.ToCharArray());Output.Items.Clear();//输出是一个列表框foreach(stringstrinLines)Output.Items.Add(str);但无济于事。有任何想法吗?删除了不必要的代码。另一种可能更简洁的方法是使用您自己的日记随心所欲地扩展TextWriter。注意:我没有测试过这个。公共类ListBoxWriter:TextWriter{私有ListBox列表;私有StringBuilder内容=newStringBuilder();publicListBoxWriter(ListBoxlist){this.list=list;}publicoverridevoidWrite(charvalue){base.Write(value);内容.追加(价值);if(value=='n'){list.Items.Add(content.ToString());内容=新的StringBuilder();}}publicoverrideEncoding编码{get{返回System.Text。编码.UTF8;我会创建一个新类来处理为您编写输出,而不是试图“捕获”发送到控制台的文本。然后新类可以写入控制台,以及您希望它去的任何其他地方。如果您正在使用.NET的Debug类,只需使用两个侦听器:ConsoleTraceListener和TextWriterTraceListener。要使现有代码工作,请添加:writer.Flush();在您的Console.WriteLine()调用之后。以上就是C#学习教程:将控制台输出重定向到winformsListBox的全部内容分享给大家。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: