반응형
안녕하세요.
오늘은 텍스트박스에 숫자형태의 값만 입력받을 수 있도록 설정하는 방법에 대한 설명입니다.
개발을 하다 보면 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 이런 식으로도 입력이 가능할 수 있기 때문에 위 방법이 더 좋을거라 생각됩니다.
위 방법보다 더 좋은 방법을 알고 계신분은 댓글로 알려주시면 감사하겠습니다.
도움이 되셨으면 좋겠네요.
반응형
'C# > WinForm' 카테고리의 다른 글
C# TextBox에 1000단위 콤마 표시 방법 (0) | 2021.11.16 |
---|---|
C# 버튼 클릭시 클릭 된 시간을 txt파일에 기록하는 예제 (0) | 2020.10.28 |
[C# WinForm] 사각형 그리기 (0) | 2018.04.19 |
[C# WinForm] ToolTip 사용법 (0) | 2018.03.27 |
댓글