为什么在手动更改值时,NumericUpDown控件上不会触发ValueChanged事件?

时间:2015-03-19 14:31:39

标签: c# winforms numericupdown

我有两个NumericUpDown控件的ValueChanged事件附加代码:

private void numericUpDownHeight_ValueChanged(object sender, EventArgs e)
{
    if (checkBoxRetainRatio.Checked)
    {
        numericUpDownWidth.Value = numericUpDownHeight.Value;
    }
}

private void numericUpDownWidth_ValueChanged(object sender, EventArgs e)
{
    if (checkBoxRetainRatio.Checked)
    {
        numericUpDownHeight.Value = numericUpDownWidth.Value;
    }
}

当我使用控件'上/下箭头可更改编辑框中的值;但是如果我手动编辑这个值(例如,当我想将它从100改为25,并且可以手动执行六次击键,而递增5,使用向下箭头需要15),事件不会触发

有没有一种快速的方法可以解决这个相当轻微的烦恼(IOW,如果需要一些非常神秘和棘手的事情来完成它,我不会打扰)。

2 个答案:

答案 0 :(得分:5)

对于要发生的ValueChanged事件,可以通过单击向上或向下按钮或用户输入控件读取的新值在代码中更改Value属性。当用户按下ENTER键或导航离开控件时,将读取新值。如果用户输入新值然后单击向上或向下按钮,则ValueChanged事件将发生两次。

来源:https://msdn.microsoft.com/en-us/library/system.windows.forms.numericupdown.valuechanged%28v=vs.110%29.aspx

答案 1 :(得分:1)

我会使用包含最新值的sender.Value。您必须将其转换为发件人的类型。

对于numericUpDown组件:

((System.Windows.Forms.NumericUpDown)(sender)).Value.ToString()