0

問題は単純です。テキスト ボックスのあるフォームがあり、それらのテキスト ボックスの 1 つに、ユーザーに正または負の 2 桁の数字を入力してもらいたいのです。この制限を強制する簡単な方法を探しています。つまり、数値を解析して絶対値が 100 未満かどうかを確認する必要はありません。

テキストボックスの最大長を 2 に設定すると、-9 未満の数値を入力できなくなります。maxlength が 3 の場合、99 を超える数値を入力できます。

マスクされたテキストボックスには解決策がありません。「-」リテラルをオプションにすることはできません。少なくとも、私が知っていることはありません。

この制限に対する最も簡単な解決策は何ですか:「「-」が入力されていない場合、空のテキストボックスは2文字の入力を受け入れ、それ以外の場合は3文字を受け入れます」? 「-」が入力されたかどうかを確認するために変更イベントを処理し、maxlength をリセットするのは少しやり過ぎのようです...

4

2 に答える 2

2

あなたは実際に欲しいですNumericUpDownControl。それを使用して、そのプロパティを設定しMinimumますMaximum。検証コードはまったく必要なく、問題を簡単に解決できます。

使用し続けているTextBox場合は、要するに、実際に番号を確認しないと、必要な機能を取得できません。これを行うためにを記述しUserControlて再利用することもできますが、それでも検証コードを記述する必要があります。

ASP.NET/Javascriptスタイルの検証を使用して整数を検証するだけです。この例では、赤のラベルを使用して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.
    }
}

検証を行うためにコードを記述しなければならないことには何の問題もありません。そうしないと、既存のデザイナープロパティを使用して良い結果が得られない可能性があります。

于 2012-04-25T19:27:30.470 に答える
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
于 2012-04-25T19:35:54.743 に答える