2012-04-25 1 views
0

문제는 간단합니다. 텍스트 상자가있는 양식이 있는데 그 중 하나의 텍스트 상자에 양수 또는 음수를 입력하십시오. 2 자리 숫자를 입력하십시오. 이 제한을 적용 할 수있는 쉬운 방법을 찾고 있습니다. 즉 숫자를 파싱하고 절대 값이 100 미만인지 확인하지 않고도 찾고 있습니다.VB.NET 텍스트 상자 양수/음수에 대한 최대 길이

텍스트 상자 maxlength를 2로 설정하면 -9보다 작은 숫자를 입력 할 수 없습니다. . 최대 길이가 3 인 경우 99보다 큰 숫자를 입력 할 수 있습니다.

마스크 된 텍스트 상자는 해결책이 없으므로 "-"리터럴을 선택적으로 만들 수 없으며 최소한 내가 아는 것은 아닙니다.

이 제한에 대한 가장 간단한 해결책은 다음과 같습니다. "빈 텍스트 상자는"- "을 입력하지 않으면 2 개의 입력 문자를 허용하고, 그렇지 않으면 3을 허용합니다." "-"가 입력되었는지 확인하고 maxlength를 재설정하는 변경 이벤트를 처리하는 것은 약간의 잔인한 것처럼 보입니다 ...

답변

2

실제로는 NumericUpDownControl을 원합니다. 그것을 사용하고 MinimumMaximum 속성을 설정하십시오. 검증 코드가 필요 없으며 문제를 쉽게 해결할 수 있습니다.

TextBox을 사용하다 보면 원하는 번호를 실제로 확인하지 않고 원하는 기능을 사용할 수 없습니다. 이 작업을 수행하기 위해 UserControl을 작성할 수 있으며 재사용 할 수 있지만 여전히 유효성 확인 코드를 작성해야합니다.

ASP.NET/자바 스크립트 스타일 유효성 검사를 사용하여 정수의 유효성을 검사하면됩니다. 이 예에서는 유효 메시지를 표시하기 위해 ForeColor 빨강 레이블을 사용합니다.

private void numberTextBox_TextChanged(object sender, EventArgs e) { 
    int number; 

    bool isValid = int.TryParse(numberTextBox.Text, out number); 

    if (!isValid) { 
     validationLabel.Text = "Must be a two-digit number."; 
     validationLabel.Visible = true; 
     return; 
    } 

    if (number < -99 || number > 99) { 
     validationLabel.Text = "Must be between -99 and 99"; 
     validationLabel.Visible = true; 
     return; 
    } 

    if (isValid) { 
     validationLabel.Visible = false; 
     // Do something else with your number 
     // if you need to. 
    } 
} 

유효성 검사를 수행하는 코드를 작성하는 데는 아무런 문제가 없습니다. 그렇지 않으면 기존 디자이너 속성을 사용하여 좋은 결과를 얻을 수 없을 것입니다.

+0

NumericUpDownControl에 대한 힌트를 제공해 주셔서 감사합니다. – MarioDS

0

텍스트 상자의 KeyPress 이벤트를 확인하고 문자 번호는 나 = 지 확인 "-"수보다 더 큰 100

경우

단지 숫자와 음의 부호를 허용하는이 코드, 당신은 확인하실 수 있습니다

private Sub Textbox1_KeyPress (ByVal sender as object, ByVal e as KeyPressEventArgs) 

    If (e.IsDigit(e.KeyChar) OR e.KeyChar = '-') Then 
     e.Handled = false 
    End If 

End Sub 
+0

좋아요, 그것은 사용자가 숫자 나 빼기 부호 이외의 다른 문자를 넣지 못하도록 제한 할 것입니다. 그러나 Integer.parse()가 다른 것을 입력했는지 확인하는 예외를 잡습니다. 어쨌든 고마워 :) – MarioDS

관련 문제