NumericUpDown 允许用户输入大于最大值的数字

Jan*_*cci 6 c# textbox max numericupdown minimum

我的班级中有一个NumericUpDown变量。的最小最大值被设置为如下:

myNumericUpDown.Maximum = 9999;
myNumericUpDown.Minimum = 0;
Run Code Online (Sandbox Code Playgroud)

这可以防止旋转框超过 9999 或低于 0。

我遇到的问题是,当用户在文本框中键入时,他们可以键入任何大于Maximum或小于Minimum 的任意数字。

NumericUpDown类中是否有一个属性可以控制文本框的最小值和最大值?或者我是否必须编写一个回调过程来检查这种情况?

Tyl*_*ler 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;
            }
    }
Run Code Online (Sandbox Code Playgroud)