VB.NETで RichTextBox コントロールにストリーミングDebug.Writeline
および/またはストリーミングすることは可能ですか?Console.Writeline
もしそうなら、そうするための最良の方法は何ですか?
VB.NETで RichTextBox コントロールにストリーミングDebug.Writeline
および/またはストリーミングすることは可能ですか?Console.Writeline
もしそうなら、そうするための最良の方法は何ですか?
独自のものを作成し、それTextWriter
に出力を設定できます。Console
つまり、任意の書き込みをインターセプトできます。より一般化するために、デリゲートを渡して、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.SetOut(new InterceptingWriter(Console.Out, (str) => UpdateMyTextBox(str));
を呼び出すたびConsole.WriteLine
に、文字列がコンソールに出力され、UpdateMyTextBox
メソッドも同じ文字列で呼び出されるため、それに応じて UI を更新できます。
出力に関しては、Debug
これを行うリスナーを作成できます。