1

VB.NETで RichTextBox コントロールにストリーミングDebug.Writelineおよび/またはストリーミングすることは可能ですか?Console.Writeline

もしそうなら、そうするための最良の方法は何ですか?

4

1 に答える 1

1

独自のものを作成し、それ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これを行うリスナーを作成できます。

http://msdn.microsoft.com/en-us/library/4y5y10s7.aspx

于 2012-09-10T22:39:01.053 に答える