■ 진수 변환하기

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


TestProject.zip


MainForm.cs

 

 

using System;

using System.Windows.Forms;

 

namespace TestProject

{

    /// <summary>

    /// 메인 폼

    /// </summary>

    public partial class MainForm : Form

    {

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

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

 

        #region Field

 

        /// <summary>

        /// 이벤트 무시 여부

        /// </summary>

        private bool ignoreEvent = false;

 

        #endregion

 

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

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

 

        #region 생성자 - MainForm()

 

        /// <summary>

        /// 생성자

        /// </summary>

        public MainForm()

        {

            InitializeComponent();

 

            #region 이벤트를 설정한다.

 

            this.decimalTextBox.TextChanged     += textBox_TextChanged;

            this.hexadecimalTextBox.TextChanged += textBox_TextChanged;

            this.octalTextBox.TextChanged       += textBox_TextChanged;

            this.binaryTextBox.TextChanged      += textBox_TextChanged;

 

            #endregion

        }

 

        #endregion

 

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

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

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

 

        #region 텍스트 박스 텍스트 변경시 처리하기 - textBox_TextChanged(sender, e)

 

        /// <summary>

        /// 텍스트 박스 텍스트 변경시 처리하기

        /// </summary>

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

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

        private void textBox_TextChanged(object sender, EventArgs e)

        {

            if(this.ignoreEvent)

            {

                return;

            }

 

            this.ignoreEvent = true;

 

            TextBox sourceTextBox = sender as TextBox;

 

            long value = 0;

 

            try

            {

                switch(sourceTextBox.Name)

                {

                    case nameof(decimalTextBox)     : value = long.Parse(sourceTextBox.Text);          break;

                    case nameof(hexadecimalTextBox) : value = Convert.ToInt64(sourceTextBox.Text, 16); break;

                    case nameof(octalTextBox)       : value = Convert.ToInt64(sourceTextBox.Text, 8);  break;

                    case nameof(binaryTextBox)      : value = Convert.ToInt64(sourceTextBox.Text, 2);  break;

                    default                         : throw new Exception("알 수 없는 컨트롤 입니다 : " + sourceTextBox.Name);

                }

            }

            catch(Exception exception)

            {

                MessageBox.Show

                (

                    "입력 문자열 파싱시 에러가 발생했습니다.\n\n" + exception.Message,

                    "에러",

                    MessageBoxButtons.OK,

                    MessageBoxIcon.Error

                );

            }

 

            if(sourceTextBox.Name != nameof(decimalTextBox))

            {

                this.decimalTextBox.Text = value.ToString();

            }

 

            if(sourceTextBox.Name != nameof(hexadecimalTextBox))

            {

                this.hexadecimalTextBox.Text = Convert.ToString(value, 16);

            }

 

            if(sourceTextBox.Name != nameof(octalTextBox))

            {

                this.octalTextBox.Text = Convert.ToString(value, 8);

            }

 

            if(sourceTextBox.Name != nameof(binaryTextBox))

            {

                this.binaryTextBox.Text = Convert.ToString(value, 2);

            }

 

            this.ignoreEvent = false;

        }

 

        #endregion

    }

}

 

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

Posted by 사용자 icodebroker
TAG