如何在值更改时验证numericupdown(并且不会失去焦点)

本文关键字:失去 焦点 numericupdown 验证 | 更新日期: 2023-09-27 18:20:29

我有一个NumericUpDown,当值发生变化(而不是失去焦点)时,我需要进行新的计算

如果我把我的代码放在事件ValueChanged中,当焦点丢失时,这就起作用了

如果我把我的代码放在KeyPress中,那么如果数字不是通过键盘输入的(例如复制一个数字并粘贴它),它就不起的作用

那么我需要使用什么事件?

如果这是按键,我需要连接更多的数值。按键将所有这些转换为字符串并转换为十进制,然后进行计算,但如果按键不是数字(例如退格),则不起作用。

如何在值更改时验证numericupdown(并且不会失去焦点)

您可以使用KeyUp事件检查CTRL+V的直接编辑和粘贴操作。

然后,您可以通过鼠标右键(上下文菜单)收听MouseUp事件来检查粘贴操作。

在该示例代码中,如果用户输入的数字大于9:,则显示MessageBox

private void numericUpDown1_KeyUp(object sender, KeyEventArgs e)
{
    if (numericUpDown1.Value >= 10){
       numericUpDown1.Value = 0;
       MessageBox.Show("number must be less than 10!");
    }
}
private void numericUpDown1_MouseUp(object sender, MouseEventArgs e)
{
    if (e.Button == System.Windows.Forms.MouseButtons.Right) {
       if (numericUpDown1.Value >= 10){
           numericUpDown1.Value = 0;
           MessageBox.Show("number must be less than 10!");
       }
    }
}