첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
유용한 소스 코드가 있으면 icodebroker@naver.com으로 보내주시면 감사합니다.
블로그 자료는 자유롭게 사용하세요.

■ Console 클래스 : SetOut 정적 메소드를 사용해 콘솔 출력 다수 재전송하기

------------------------------------------------------------------------------------------------------------------------


TestProject.zip


TextBoxWriter.cs

 

 

using System.IO;

using System.Text;

using System.Windows.Forms;

 

namespace TestProject

{

    /// <summary>

    /// 텍스트 박스 작성자

    /// </summary>

    public class TextBoxWriter : TextWriter

    {

        //////////////////////////////////////////////////////////////////////////////////////////////////// Field

        ////////////////////////////////////////////////////////////////////////////////////////// Private

 

        #region Field

 

        /// <summary>

        /// 컨트롤

        /// </summary>

        private Control control;

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////////////////////////// Property

        ////////////////////////////////////////////////////////////////////////////////////////// Public

 

        #region 인코딩 - Encoding

 

        /// <summary>

        /// 인코딩

        /// </summary>

        public override Encoding Encoding

        {

            get

            {

                return Encoding.Unicode;

            }

        }

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor

        ////////////////////////////////////////////////////////////////////////////////////////// Public

 

        #region 생성자 - TextBoxWriter(control)

 

        /// <summary>

        /// 생성자

        /// </summary>

        /// <param name="control">컨트롤</param>

        public TextBoxWriter(Control control)

        {

            this.control = control;

        }

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method

        ////////////////////////////////////////////////////////////////////////////////////////// Public

 

        #region 쓰기 - Write(value)

 

        /// <summary>

        /// 쓰기

        /// </summary>

        /// <param name="value"></param>

        public override void Write(char value)

        {

            this.control.Text += value;

        }

 

        #endregion

        #region 쓰기 - Write(value)

 

        /// <summary>

        /// 쓰기

        /// </summary>

        /// <param name="value"></param>

        public override void Write(string value)

        {

            this.control.Text += value;

        }

 

        #endregion

    }

}

 

 

ListTextWriter.cs

 

 

using System.Collections.Generic;

using System.IO;

using System.Text;

 

namespace TestProject

{

    /// <summary>

    /// 리스트 텍스트 작성자

    /// </summary>

    public class ListTextWriter : TextWriter

    {

        //////////////////////////////////////////////////////////////////////////////////////////////////// Field

        ////////////////////////////////////////////////////////////////////////////////////////// Private

 

        #region Field

 

        /// <summary>

        /// 텍스트 작성자 리스트

        /// </summary>

        private List<TextWriter> textWriterList = new List<TextWriter>();

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////////////////////////// Property

        ////////////////////////////////////////////////////////////////////////////////////////// Public

 

        #region 인코딩 - Encoding

 

        /// <summary>

        /// 인코딩

        /// </summary>

        public override Encoding Encoding

        {

            get

            {

                return Encoding.Unicode;

            }

        }

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method

        ////////////////////////////////////////////////////////////////////////////////////////// Public

 

        #region 추가하기 - Add(writer)

 

        /// <summary>

        /// 추가하기

        /// </summary>

        /// <param name="writer">작성자</param>

        public void Add(TextWriter writer)

        {

            this.textWriterList.Add(writer);

        }

 

        #endregion

        #region 쓰기 - Write(value)

 

        /// <summary>

        /// 쓰기

        /// </summary>

        /// <param name="value"></param>

        public override void Write(char value)

        {

            foreach(TextWriter writer in this.textWriterList)

            {

                writer.Write(value);

            }

        }

 

        #endregion

        #region 쓰기 - Write(value)

 

        /// <summary>

        /// 쓰기

        /// </summary>

        /// <param name="value"></param>

        public override void Write(string value)

        {

            foreach(TextWriter writer in this.textWriterList)

            {

                writer.Write(value);

            }

        }

 

        #endregion

        #region 버퍼 비우기 - Flush()

 

        /// <summary>

        /// 버퍼 비우기

        /// </summary>

        public override void Flush()

        {

            foreach(TextWriter writer in this.textWriterList)

            {

                writer.Flush();

            }

        }

 

        #endregion

        #region 닫기 - Close()

 

        /// <summary>

        /// 닫기

        /// </summary>

        public override void Close()

        {

            foreach(TextWriter writer in this.textWriterList)

            {

                writer.Close();

            }

        }

 

        #endregion

    }

}

 

 

MainForm.cs

 

 

using System;

using System.Windows.Forms;

 

namespace TestProject

{

    /// <summary>

    /// 메인 폼

    /// </summary>

    public partial class MainForm : Form

    {

        //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor

        ////////////////////////////////////////////////////////////////////////////////////////// Public

 

        #region 생성자 - MainForm()

 

        /// <summary>

        /// 생성자

        /// </summary>

        public MainForm()

        {

            InitializeComponent();

 

            #region 이벤트를 설정한다.

 

            Load                   += Form_Load;

            this.writeButton.Click += writeButton_Click;

 

            #endregion

        }

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method

        ////////////////////////////////////////////////////////////////////////////////////////// Private

        //////////////////////////////////////////////////////////////////////////////// Event

 

        #region 폼 로드시 처리하기 - Form_Load(sender, e)

 

        /// <summary>

        /// 폼 로드시 처리하기

        /// </summary>

        /// <param name="sender">이벤트 발생자</param>

        /// <param name="e">이벤트 인자</param>

        private void Form_Load(object sender, EventArgs e)

        {            

            ListTextWriter writer = new ListTextWriter();

 

            writer.Add(new TextBoxWriter(this.consoleTextBox));

            writer.Add(new TextBoxWriter(this.consoleLabel));

 

            Console.SetOut(writer);

        }

 

        #endregion

        #region 쓰기 버튼 클릭시 처리하기 - writeButton_Click(object sender, EventArgs e)

 

        /// <summary>

        /// 쓰기 버튼 클릭시 처리하기

        /// </summary>

        /// <param name="sender">이벤트 발생자</param>

        /// <param name="e">이벤트 인자</param>

        private void writeButton_Click(object sender, EventArgs e)

        {

            Console.WriteLine(this.outputTextBox.Text);

 

            this.outputTextBox.Clear();

        }

 

        #endregion

    }

}

 

------------------------------------------------------------------------------------------------------------------------

Posted by 사용자 icodebroker

댓글을 달아 주세요