텍스트박스에 한글만 입력하기
private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if((Char.IsPunctuation(e.KeyChar) || Char.IsDigit(e.KeyChar) || Char.IsLetter(e.KeyChar) || Char.IsSymbol(e.KeyChar)) && e.KeyChar != 8)
{
e.Handled = true;
}
}
텍스트박스에 영어만 입력하기
private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if(!(Char.IsLetter(e.KeyChar)) && e.KeyChar != 8)
{
e.Handled = true;
}
}
private void textBox1_Leave(object sender, System.EventArgs e)
{
Regex emailregex = new Regex(@"[a-zA-Z]");
Boolean ismatch = emailregex.IsMatch(textBox1.Text);
if (!ismatch)
{
MessageBox.Show("영문자만 입력해 주세요.");
}
}
텍스트박스에 숫자만 입력하기
private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if(!(Char.IsDigit(e.KeyChar)) && e.KeyChar != 8)
{
e.Handled = true;
}
}private void textBox1_Leave(object sender, System.EventArgs e)
{
Regex emailregex = new Regex(@"[0-9]");
Boolean ismatch = emailregex.IsMatch(textBox1.Text);
if (!ismatch)
{
MessageBox.Show("숫자만 입력해 주세요.");
}
}
음.. 이렇게 두번에 걸쳐 체크한 이유는 한글은 ProcessKey이기 때문에 KeyPress 이벤트가 일어나지 않기 때문입니다. 그렇기 때문에 텍스트박스에서 포커스가 벗어날때 정규식을 이용해 한번더 체크해줘야 합니다. 키값 8번은 백스페이스 값입니다.
자료출처 : C#개발자싸이트
http://www.sky.ph/