프로젝트->추가->사용자 정의 컨트롤을 클릭하여 생성합니다. 저는 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로 바꾸면서 이 속성이 없어서 나타난 오류입니다.
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가 나타나는것을 확인 할 수 있습니다.