TextBox に出力する TextWriter があります。TextWriter を Console.Out に接続しました。
// set application console output to the output text box
Console.SetOut(TextWriter.Synchronized(new TextBoxWriter(this)));
class TextBoxWriter : TextWriter
{
public override void WriteLine(string value)
{
// output to text box
}
}
これは正常に動作しますが、.NET フレームワーク自体がトレース/デバッグ出力をコンソールに書き込んでいるため、ウィンドウが表示されていることがわかりました。
たとえば、ユーザーはフォーム上にコントロールを作成するボタンをクリックできます。これにより、次のような出力が得られます。
170,130 0,0
コール スタックは、テキストライターの WriteLine 関数が、MyForm.Controls.Add(...); に応答して外部コードから呼び出されていることを示しています。
ユーザーがコントロールのサイズを変更すると、次のようなナンセンスが .NET フレームワークによってコンソールに書き込まれます。
0.574257425742574 @ 1
コール スタックは、テキストライターの WriteLine 関数が、MyControl.Width = NewValue; に応答して外部コードから呼び出されていることを示しています。
これは、アプリケーションがデバッグおよびリリース用にビルドされているときに発生します。
トレースまたはデバッグ機能をオンにしません。
DEBUG と TRACE が定義されていない場合でも発生します。
私のアプリケーションは、デバッグまたはトレースに関連することを言及したり実行したりしません。
コンソールでは他に何もしません。
私のアプリケーションは、System.Diagnostics で何も呼び出しません。
C#、.NET 4.0、Windows 7 64 ビット、Visual Studio 2010 を使用。
これは私を夢中にさせています。次に何を試すかについて何か提案はありますか?