对于控制台自定义的TextWriter的OutputStream没有外部类工作

问题描述 投票:0回答:1

我想转发Console输出到Windows窗体TextBox控制。所以我连着定制TextWriter到追加输出到ConsoleTextBox

但我认为TextWriterTextBox是从外部类中不可访问。如何解决这一问题?检查下面我的代码:

partial class Form1 : Form
{
  public StringWriter _TextWriter;

  public Form1()
  {
    InitializeComponent();

    this._TextWriter = new TextBoxStreamWriter(this.textBox1);
    Console.SetOut(this._TextWriter);

    Console.WriteLine("This text does appear in the TextBox, works perfect.");

    Test ConsoleOutputExternalClass = new Test();
  }
}

public class TextBoxStreamWriter : StringWriter
{
  TextBox _output = null;

  public TextBoxStreamWriter(TextBox output)
  {
    this._output = output;
  }

  public override void WriteLine(string value)
  {
    base.WriteLine(value);
    this._output.AppendText(value.ToString());
  }

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

private class Test
{
  public Test()
  {
    // HERE I GET AN EXCEPTION ERROR !!
    Console.WriteLine("System.IO.IOException: 'The handle is invalid.'");
  }
}
c# winforms io windows-console textwriter
1个回答
1
投票

当我尝试后发现,问题还有另外一个原因比我的预期。在我的节目我用Console.Clear()删除所有的印刷线,但显然这也破坏了链接到自定义设置输出流。

而这将不明确的文本框毕竟,我应该使用TextBox.Clear()

我很后悔的,因为我的问题是不是在这种情况下来看,问题似乎在于别的地方。事实上,在我的问题的代码没有很好地工作,因为没有呼叫Console.Clear(),但我就是没有搞清楚是什么导致了这个问题。

真正的问题是:如何“覆盖” Console.Clear()以清除文本框?但是,这是另外一个话题。

© www.soinside.com 2019 - 2024. All rights reserved.