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

B. *_*non 3 c# numericupdown winforms

我有两个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;
    }
}
Run Code Online (Sandbox Code Playgroud)

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

有没有一种快速的方法来解决这个相当轻微的刺激(如果它需要一些非常神秘和棘手的实现它,我不会打扰).

use*_*390 5

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

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

  • 基本上,如果你想在使用仍在输入时获得有效值,你真的想注册`TextChanged`事件并自己解析值. (2认同)