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的值。此外,默认行为"向上和向下操作"值也不应受到此影响。我该怎么做?
只是一个快速的想法:
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