본문 바로가기
C#/WinForm

C# TextBox에 숫자 형식만 입력받을 수 있도록 하는 방법

by 샤나엘 2020. 10. 22.
반응형

안녕하세요.

오늘은 텍스트박스에 숫자형태의 값만 입력받을 수 있도록 설정하는 방법에 대한 설명입니다.

 

개발을 하다 보면 TextBox에 숫자형태의 값만 받아 올 수 있도록 해야 하는 경우가 있습니다.

특정 옵션으로 설정할 수 있으면 좋을텐데 그런 방법은 없는 것 같네요.

다른 포스팅 찾아보면 KeyPress로 설정하던데,

저는 그것보다 다른 방법으로 설정하는 방법을 알려드리겠습니다.

 

일단 아래 코드를 먼저 보겠습니다.

 

        string prevText = string.Empty;
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            double value = 0;
            //입력받은 값이 double 형으로 변환활 수 있는 지 확인
            if (double.TryParse(this.textBox1.Text, out value) == false)
            {
                //변환할 수 없으면 이전 텍스트 값으로 재 설정
                this.textBox1.Text = prevText;
                //커서 위치를 텍스트의 제일 마지막으로 위치시킴
                this.textBox1.Select(this.textBox1.Text.Length, 0);
            }
            else
            {
                //변환할 수 있으면 현재 값을 이전 값으로 저장해 둠.
                prevText = this.textBox1.Text;
            }
        }

TextChanged()이벤트에서 처라할 수 있도록 해 두었고,

이전 값을 저장해 두었다가, 현재 입력받은 값이 double 형으로 변환할 수 있으면 해당 값을 이전 값으로 저장해두고,

입력받은 값이 double 형으로 변환할 수 없으면 이전 값으로 TextBox의 Text 값으려 변경해주고, 커서의 위치를 텍스트의 마지막으로 위치시키는 코드를 넣었습니다.

 

코드를 보시면 아시겠지만 간단하게 처리가 가능합니다.

 

KeyPress()로 처리하면 1......111.....11 이런 식으로도 입력이 가능할 수 있기 때문에 위 방법이 더 좋을거라 생각됩니다.

 

위 방법보다 더 좋은 방법을 알고 계신분은 댓글로 알려주시면 감사하겠습니다.

 

 

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

반응형

댓글