C#,winform - 在KeyPress上未验证NumericUpDown最大限制?

时间:2011-10-11 13:55:00

标签: c# winforms

使用C#winform应用程序的NumericUpDown控件。

将Maximun值设置为99.但是当我输入99以上的值时,例如:555,它允许我在值555中键入(key_press事件),并且只有在我离开控件时它才会变回最大值(99)。我需要的是,不允许用户键入超过99的值。此外,默认行为“向上和向下操作”值不应受此影响。我该怎么做呢?

4 个答案:

答案 0 :(得分:1)

只是一个简单的想法:

public class StrictNumericUpDown : NumericUpDown
{
    protected override void OnTextBoxTextChanged(object source, EventArgs e)
    {
        base.OnTextBoxTextChanged(source, e);
        if (Value > Maximum)
        {
            Value = Maximum;
        }
    }
}

答案 1 :(得分:1)

使用

  

KEYUP

事件。

((TextBox)numericUpDown1.Controls[1]).MaxLength = 2; //正如汉斯所说。

答案 2 :(得分:0)

您可以使用KeyDown事件并在触发时验证该值。

答案 3 :(得分:0)

当我们在c#中使用了numericupdown控件时,如果要限制控件中的数字长度限制(例如2,3,4 ... etc)以限制limit-1位数字,请使用keypress,keydown / up事件。使用ctrl + shift +向左或向右箭头键组合控制值,然后按数字键输入新值,即可正常工作,但是当您选择所有数字(长度限制)时,新的数字键将无法进入数字上下控制处理图片下方的事件:

KeyDown event code snippet with issue

因此,@ Hans Passant建议使用类型转换解决方法来解决此问题。

在formload事件或InitializeComponent()方法中添加此行。

((TextBox)numericUpDown1.Controls\[1\]).MaxLength = 4;

要正确处理以下代码段中的4位数字长度限制:

KeyDown event code snippet with Solution

谢谢!汉斯·帕桑特