C#, C♯, C#相談室 Part44

このエントリーをはてなブックマークに追加
928デフォルトの名無しさん
すみません、TraceSourceについてちょっと質問です。
以下のようなクラスを作り
class TextBoxTraceListener : TraceListener
{
  TextBox textBox;
  public TextBoxTraceListener(TextBox tb)
  {
    this.textBox = tb;
  }
  public override void Write(string message)
  {
    this.textBox.AppendText(message);
  }
}
class Form1 : Form
{
  public Form1()
  {
    TraceSource ts = new TraceSource(GetType().ToString());
    ts.Listeners.Add(new TextBoxTraceListener(this.textBox1));
    ts.TraceInformation("hoge");
  }
}
とやれば、hoge がテキストボックスに表示されますよね。
他のクラスでTraceSourceを作成し、トレースしても、そのインスタンスごとにリスナを登録しないとだめですよね。
でも構成ファイル(app.config)にConsoleTraceListenerとか
TextWriterTraceListenerとかを指定してやれば全てのTraceSourceのインスタンスにリスナを設定してくれますよね。
ところがTextBoxTraceListenerはTextBoxのインスタンスが必要なので、構成ファイルで設定できないのです。

複数のクラスでTraceSourceを使っていて、それらの出力を全てテキストボックスに表示させたいんです。
なんかいい方法ありませんか?