Vb.net Debug.Writeline和/或Console.Writeline到RichTextBox
是否可以将Vb.net Debug.Writeline和/或Console.Writeline到RichTextBox,vb.net,console,richtextbox,Vb.net,Console,Richtextbox,是否可以将Debug.Writeline和/或Console.Writeline流式传输到中的RichTextBox控件 如果是这样,最好的方法是什么?您可以创建自己的TextWriter,并将控制台的输出设置为该值,这意味着您可以拦截任何写入操作。为了使其更加通用,您可以传入一个委托,以便将来支持任何操作,而不仅仅是更新RichTextBox 例如: class InterceptingWriter : TextWriter { TextWriter _existingWriter;
Debug.Writeline
和/或Console.Writeline
流式传输到中的RichTextBox控件
如果是这样,最好的方法是什么?您可以创建自己的
TextWriter
,并将控制台的输出设置为该值,这意味着您可以拦截任何写入操作。为了使其更加通用,您可以传入一个委托,以便将来支持任何操作,而不仅仅是更新RichTextBox
例如:
class InterceptingWriter : TextWriter
{
TextWriter _existingWriter;
Action<string> _writeTask;
public InterceptingWriter(TextWriter existing, Action<string> task)
{
_existingWriter = existing;
_writeTask = task;
}
public override void WriteLine(string value)
{
// This outputs to the console. Remove it if you only want output to
// appear in your control
_existingWriter.WriteLine(value);
// This calls the delegate you passed in to the constructor, updating
// your textbox or anything else that acts upon the string passed in
_writeTask(value);
}
public override Encoding Encoding
{
get { throw new NotImplementedException(); }
}
// ...other overrides as necessary...
}
现在,无论何时调用Console.WriteLine
,字符串都将输出到控制台,您的UpdateMyTextBox
方法也将使用相同的字符串调用,从而允许您相应地更新UI
对于Debug
输出,您可以编写一个侦听器来执行此操作:
您可以创建自己的文本编写器
,并将控制台
输出设置为该值,这意味着您可以拦截任何写入操作。为了使其更加通用,您可以传入一个委托,以便将来支持任何操作,而不仅仅是更新RichTextBox
例如:
class InterceptingWriter : TextWriter
{
TextWriter _existingWriter;
Action<string> _writeTask;
public InterceptingWriter(TextWriter existing, Action<string> task)
{
_existingWriter = existing;
_writeTask = task;
}
public override void WriteLine(string value)
{
// This outputs to the console. Remove it if you only want output to
// appear in your control
_existingWriter.WriteLine(value);
// This calls the delegate you passed in to the constructor, updating
// your textbox or anything else that acts upon the string passed in
_writeTask(value);
}
public override Encoding Encoding
{
get { throw new NotImplementedException(); }
}
// ...other overrides as necessary...
}
现在,无论何时调用Console.WriteLine
,字符串都将输出到控制台,您的UpdateMyTextBox
方法也将使用相同的字符串调用,从而允许您相应地更新UI
对于Debug
输出,您可以编写一个侦听器来执行此操作:
控制台/调试调用是在与RichTextBox相同的应用程序中进行的,还是您正在尝试加载控制台应用程序并希望在RTB中显示其输出?那么此链接可能有助于您将console.stdout重定向到另一个流,然后您可以通过管道将其传输到RTB:也许我理解有问题,但是我怎样才能让richtextbox在任何时候更新流中添加的更多内容。控制台/调试调用是否与richtextbox在同一个应用程序中进行,或者您正在尝试加载控制台应用程序并希望在RTB中显示其输出?那么此链接可能会帮助您将console.stdout重定向到另一个流,然后您可以通过管道将其传输到RTB中:也许我理解有困难,但是我怎样才能让richtextbox在流中添加更多内容时随时更新呢?对不起,C#代码。我没有注意到问题被标记为VB.NET。您可以使用在线转换器为您翻译:我已经尝试将其翻译为vb.net,但无法修复。你怎么能这么说?对不起,C代码。我没有注意到问题被标记为VB.NET。您可以使用在线转换器为您翻译:我已经尝试将其翻译为vb.net,但无法修复。你怎么能叫它?