6

クラスにNumericUpDown変数があります。最小値最大値は次のように設定されます。

myNumericUpDown.Maximum = 9999;
myNumericUpDown.Minimum = 0;

これにより、スピン ボックスが 9999 を超えたり、0 を下回ったりするのを防ぎます。

私が抱えている問題は、ユーザーがテキストボックス内に入力すると、 Maximumより大きいまたはMinimumより小さい任意の数値を入力できることです。

テキスト ボックスの最小値と最大値を制御するNumericUpDownクラスのプロパティはありますか? それとも、この状態をチェックするコールバック プロシージャを作成する必要がありますか?

4

1 に答える 1

3

フォームデザインビューのプロパティペインでプロパティを設定すると、これが自動的に処理されます。ユーザーが12000と入力し、最大値が9999の場合、コントロールがフォーカスを失うとすぐに、コントロールは最大値の9999に下がります。負の値でも同じようになります。コントロールがフォーカスを失うと、自動的に0になります。

ユーザーが4桁を超えて入力できないようにする場合は、KeyDownイベントを監視するだけで済みます。

    /// <summary>
    /// Checks for only up to 4 digits and no negatives
    /// in a Numeric Up/Down box
    /// </summary>
    private void numericUpDown1_KeyDown(object sender, KeyEventArgs e)
    {
        if (!(e.KeyData == Keys.Back || e.KeyData == Keys.Delete))
            if (numericUpDown1.Text.Length >= 4 || e.KeyValue == 109)
            {
                e.SuppressKeyPress = true;
                e.Handled = true;
            }
    }
于 2012-08-19T08:13:36.367 に答える