VS 버전: 2013
private void NumberTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
if(!(char.IsDigit(e.KeyChar) || e.KeyChar == Convert.ToChar(Keys.Back)))
{
e.Handled = true;
}
}
목표
숫자만 입력받는 TextBox 유저 컨드롤 만들기
프로젝트->추가->사용자 정의 컨트롤을 클릭하여 생성합니다. 저는 NumberTextBox.cs라고 적겠습니다.
추가된 NumberTextBox.cs 에 코드를 보기 위해서 NumberTextBox를 더블 클릭합니다.
그러면 코드는 다음과 같이 작성되어 있습니다.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Signal_processing
{
public partial class NumberTextBox : UserControl
{
public NumberTextBox()
{
InitializeComponent();
}
}
}
저는 TextBox를 그대로 가져와서 숫자만 입력되도록 이벤트를 추가할 것이기 때문에
아래와 같이 UserControl을 TextBox로 수정합니다.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Signal_processing
{
public partial class NumberTextBox : TextBox
{
public NumberTextBox()
{
InitializeComponent();
}
}
}
이제 NumberTextBox.cs를 더블클릭하면 다음과 같은 에러를 보게 됩니다.
.Designer.cs 줄: 32 열: 1이라는 메세지를 클릭하여 오류가 난 위치로 이동합니다.
다음과 같이 this.AutoScaleMode에 빨간줄이 그어져 있습니다.
이것은 UserControl 클래스에서는 있었던 속성이 TextBox로 바꾸면서 이 속성이 없어서 나타난 오류입니다.
이 줄을 지워줍니다.
[이벤트 추가]
NumberTextBox.cs 열면 속성창에 NumberTextBox의 속성이 나타납니다.
번개 아이콘을 클릭하여 이벤트 속성으로 변경하고
KeyPress 영역을 더블클릭 하여 해당 이벤트가 자동생성되도록 합니다.
그러면 아래와 같이 NumberTextBox_KeyPress 함수가 생성됩니다.
다음과 같이 함수 안에 로직을 작성하면 완료됩니다.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Signal_processing
{
public partial class NumberTextBox : TextBox
{
public NumberTextBox()
{
InitializeComponent();
}
private void NumberTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
//숫자와 백스페이스를 제외한 나머지를 바로 처리
if(!(char.IsDigit(e.KeyChar) || e.KeyChar == Convert.ToChar(Keys.Back)))
{
e.Handled = true;
}
}
}
}
이제 컴파일 한번 하면 구성 요소에 NumberTextBox가 나타나는것을 확인 할 수 있습니다.
Reference
'C#' 카테고리의 다른 글
[c#][.NET Core] 콘솔 애플리케이션으로 실행 (0) | 2023.01.17 |
---|---|
[C#][Winform][MSChart] 차트 Area 영역 재설정 하기 (0) | 2022.10.20 |
[C#][MSChart] Cursor 없애기 (0) | 2022.06.23 |
[C#, DataGridView] 실시간 데이터 추가시 느려지는 현상 해결 (0) | 2020.07.08 |
[C#, DataGridView] 데이터 추가시 DataGridView 깜빡임 문제 해결 (0) | 2020.07.08 |