为什么手动更改值时NumericUpDown控件上未触发ValueChanged事件



我将代码附加到两个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,如果需要一些非常神秘和棘手的事情来完成,我就不会麻烦了)。

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

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

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

对于numericUpDown组件:

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

最新更新