如何在值更改时验证numericupdown(而不是丢失焦点)

时间:2013-06-28 16:42:04

标签: c# winforms visual-studio-2010 numericupdown

我有一个NumericUpDown,当值改变(而不是lostfocus)进行新的计算时我需要

如果我将代码放在事件ValueChanged中,那么当焦点丢失时,这项工作

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

然后我需要使用什么事件?

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

1 个答案:

答案 0 :(得分:3)

您可以使用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!");
       }
    }
}