Как перенаправить вывод консоли в TextBox в C#

Консоль

В этой заметке рассказано как перенаправить вывод консоли в TextBox. Тоесть, например, инструкция Console.WriteLine("Какая то строка"); приведет к добавлению новой строки в заданный TextBox.

Для начала, давайте создадим проект Windows Application в Visual Studio и назовем его “ConsoleRedirection”.

Для того, что бы перенаправить вывод консоли в textbox windows формы, нам надо создать новый класс на основе абстрактного класса StringWriter.

В проекте создайте новый файл класса и назовите его “TextBoxStreamWriter.cs”. Теперь проект выглядит так:

Структура проекта  Как перенаправить вывод консоли в TextBox в C#

Введите следующий код в .cs файл.

using System;
using System.Text;
using System.IO;
using System.Windows.Forms;

namespace ConsoleRedirection
{
    public class TextBoxStreamWriter : TextWriter
    {
        TextBox _output = null;

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

        public override void Write(char value)
        {
            base.Write(value);
            _output.AppendText(value.ToString()); // Когда символ записывается в поток, добавляем его в textbox.
        }

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

Убедитесь в том, что абстрактное свойство Encoding переопределено, и также переопределите метод Write(char value), который вызывается когда символ записывается в поток.

Теперь откройте класс главной формы “Form1.cs”, и перетяните на нее TextBox и Button. Назовите TextBox “txtConsole”.

Как выглядит форма после добавления UI элементов  Как перенаправить вывод консоли в TextBox в C#

Последняя что надо сделать, это включить перенаправление. Сделайте двойной щелчок мышью по форме, что бы открыть исходный код.  Добавьте следующий код. Как видите, в этом нет ничего сложного.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace ConsoleRedirection
{
    public partial class FormConsole : Form
    {
        // Это наш специальный класс TextWriter
        TextWriter _writer = null;

        public FormConsole()
        {
            InitializeComponent();
        }

        private void FormConsole_Load(object sender, EventArgs e)
        {
             // Инстанциируем writer
             _writer = new TextBoxStreamWriter(txtConsole);
             // Перенаправляем выходной поток консоли
            Console.SetOut(_writer);

            Console.WriteLine("Теперь вывод перенаправляется в textbox");
        }

        // Это вызывается когда нажимается кнопка "Say Hello"
        private void txtSayHello_Click(object sender, EventArgs e)
        {
            // Запись в консоль теперь приводит к показу текста в text box-е.
            Console.WriteLine("Hello world");
        }
    }
}
Исходный код для этой статьи находится тут: http://svanryckeghem.free.fr/downloads/ConsoleRedirection.zip

Источник: http://saezndaree.wordpress.com/2009/03/29/how-to-redirect-the-consoles-output-to-a-textbox-in-c/

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>