我正在用C#(.NET 4.0)编写一个小应用程序。我希望在numericUpDown中值更改时触发事件,但似乎当控件失去焦点或有多个更改时,numericUpDown ValueChanged将触发。
详细说明: 我绑定(OnPropertyChanged)numericUpDown与对象的属性,以便立即反映更改。但我还需要使用这个新更改的numericUpDown值来计算某些内容(全局/与对象无关)。但是如果我使用ValueChanged事件,那就太晚了。
简短说明:
我需要一个与OnPropertyChanged具有类似功能的活动。
我该怎么办?
修改 在ValueChanged事件处理程序中,我对对象进行了一些计算,但是已更改的值尚未提交给object属性,因此我认为ValueChanged事件滞后。
感谢您的帮助。
答案 0 :(得分:8)
ValueChanged是您需要使用的。我检查过,当控件失去焦点时它没有触发,我无法按照你声明的方式输入多个更改。如果我快速点击三次,消息框会显示第一次点击的预期值,这就是你想要的。我不知道你说ValueChanged太晚了。它甚至在重新绘制在屏幕上之前就会在消息框中显示新值。
private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
MessageBox.Show("Value changed to " + numericUpDown1.Value.ToString());
}