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

本文关键字:KeyPress 验证 winform-NumericUpDown | 更新日期: 2023-09-27 18:10:52

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

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

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

只是一个快速的想法:

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

使用

KeyUp

事件。

((TextBox)numericUpDown1.Controls[1]).MaxLength = 2;//如Hans所述。

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

当我们在c#中使用numericupdown控件时,当您想限制控件中的数字长度限制(如2,3,4。。。对于限制-1位数字,您使用ctrl+shift+左或右箭头键组合选择控件中的值,并按下数字键获取新值,它工作正常,但当您选择所有数字(长度限制(时,由于处理下图中的事件,新的数字键无法进入数字上升下降控件:

KeyDown事件代码段出现问题

因此,@Hans-Passant建议使用类型转换的变通方法来解决这个问题。

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

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

为了正确处理以下代码段中的4位长度限制:

带有解决方案的KeyDown事件代码段

谢谢!Hans-Passant