3

C#では、コンソール出力をWindowsフォームのテキストボックスに送信するための良い方法は何ですか?

console.WriteLineを持つ既存のプログラムがある場合、Windowsフォームテキストボックスの関数をオーバーロードする必要がありますか?

4

2 に答える 2

13

テキストボックスに書き込むテキストライターを作成します。

    public class TextBoxWriter : TextWriter
    {
        TextBox _output = null;

        public TextBoxWriter (TextBox output)
        {
            _output = output;
        }

        public override void Write(char value)
        {
            base.Write(value);
            _output.AppendText(value.ToString());
        }

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

そして、コンソール出力をこのライターにリダイレクトします。

        //...

        public Form()
        {
            InitializeComponent();
        }

        private void Form_Load(object sender, EventArgs e)
        {
            Console.SetOut(new TextBoxWriter(txtConsole));
            Console.WriteLine("Now redirecting output to the text box");
        }
于 2013-02-10T22:11:51.267 に答える
-3
button_Click(object sender, EventArgs e)
{
   try
   {
      // Do stuff
   }
   catch(Exception exception)
   {
      // Couldn't do stuff. Log the exception.
      myTextBox.Text += "\n" + exception.Message;
   }
}

それはそれをするべきです。

于 2013-02-10T22:04:36.623 に答える