C#-如何在值更改(而不失去焦点)时验证numericupdown

我有一个NumericUpDown,我需要在值更改(而不是丢失焦点)时进行新的计算

如果我将代码放在事件ValueChanged中,则在失去焦点时会执行此工作

如果我将代码放在KeyPress中,则如果未通过键盘输入数字(例如,复制并粘贴数字),它将无法正常工作

那我需要使用什么事件?

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

解决方法:

您可以使用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!");
       }
    }
}
上一篇:c#-为什么System.Timers.Timer经过时间在关闭并重新打开表单后多次触发


下一篇:如何使用C#通过Winforms中的类从数组获取值