본문 바로가기
C#/WinForm

C# TextBox에 1000단위 콤마 표시 방법

by 샤나엘 2021. 11. 16.
반응형

윈폼 TextBox에 1000단위마다 콤마로 표시하고, 해당 TextBox에는 숫자만 기록되게 하는 예제입니다.

 

화면

간단하게 아래와 같이 화면을 구성하고,

텍스트 박스 속성중 TextAlign값을 Right로 설정합니다.

 

코드

해당 예제는 TextChanged 이벤트를 사용해서 구현했습니다.

TextChanged 이벤트는 Text의 값이 변경될 때 마다 실행됩니다.

값을 입력할 때 마다 숫자인지 확인하고, 숫자이면 천단위로 표시된 String값을 TextBox의 Text 속성에 넣어주고,

숫자가 아니면 이전에 입력되었던 값을 다시 넣어서 아무일도 일어나지 않은 것 처럼 보여집니다.

using System;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        string prevValue = string.Empty;
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            TextBox textBox = sender as TextBox;

            string text = textBox.Text.Replace(",", "");

            double num = 0;
            if (double.TryParse(text, out num))//숫자형태의 값일 때만 처리
            {
                textBox.Text = string.Format("{0:#,##0}", num);
                textBox.SelectionStart = textBox.TextLength;//커서를 항상 글자 제일 뒤로 위치시킴
                textBox.SelectionLength = 0;
            }
            else
            {
                textBox.Text = prevValue;//숫자형태의 값이 아니면 이전값으로 설정
            }

            prevValue = textBox.Text;
        }
    }
}

 

실행화면

도움이 되셨으면 좋겠네요.

반응형

댓글