은 ... 그리고 하나 개의 가능한 솔루션은 사용자가 체결 각 키를 캡처하는 것입니다 텍스트 상자. 누른 키가 숫자 또는 백 스페이스가 아닌 경우이 키를 무시하십시오. 숫자 키만 캡처하면 아래와 같은 텍스트 상자 KeyPressed
이벤트를 사용하여 캡처 할 수 있습니다. 아래 코드는 또한 10 자리 만 허용합니다. 10 자리 이상 입력하면 무시됩니다. 사용자가 하나 개 이상의 숫자 미만 10 자리를 입력하고 다른 컨트롤을 클릭하여 텍스트 상자를 떠나려고 할 때
private void txtPhoneNumber_KeyPress(object sender, KeyPressEventArgs e) {
if (!Char.IsDigit(e.KeyChar) && (e.KeyChar != (char)(Keys.Back))) {
e.Handled = true;
}
else {
// is a digit or backspace - ignore digits if length is alreay 10 - allow backspace
if (Char.IsDigit(e.KeyChar)) {
if (txtPhoneNumber.Text.Length > 9) {
e.Handled = true;
}
}
}
}
유일한 다른 가능한 문제가 올 수 있습니다. 텍스트 상자 Leave
이벤트를 연결해야합니다. 사용자가 정확히 10 자리 숫자를 입력하기 전에 텍스트 상자를 벗어나려고하면 아래 코드는 전화 번호가 10 자리가 아니라는 메시지를 표시 한 다음 전화 번호 텍스트 상자에 포커스를 BACK으로 설정합니다. 사용자는 텍스트를 지우고 필요한 경우 계속할 수 있지만 사용자는 9 자리 이하의 숫자를 입력하고 전화 번호 텍스트 상자를 남겨 둘 수 없습니다. 희망이 도움이됩니다.
private void txtPhoneNumber_Leave(object sender, EventArgs e) {
if ((txtPhoneNumber.Text.Length < 10) && (txtPhoneNumber.Text.Length > 0)) {
MessageBox.Show("Phone number must be 10 digits!");
txtPhoneNumber.Focus();
}
}
그래서 무엇이 잘못 되었나요? 길이 만 확인하고 싶니? – Sajeetharan
''^ \ d {10} $ "'또는 정규 텍스트 상자 대신 마스크 된 텍스트 상자를 사용하는 정규 표현식을 사용해야합니다. –
정의가 올바르게 작동하지 않았습니다. –