繁体   English   中英

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

[英]Why is the ValueChanged event not triggered on a NumericUpDown Control When the Value is Changed Manually?

我将代码附加到两个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/zh-cn/library/system.windows.forms.numericupdown.valuechanged%28v=vs.110%29.aspx

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

对于numericUpDown组件:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM