我有一个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!");
}
}
}