为什么手动更改值时不会在 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;
}
}
当我使用控件的 up/down 箭头更改编辑框中的值时,这很有效;但是如果我手动编辑该值(例如,当我想将它从 100 更改为 25 时,并且可以在六次击键中手动完成,而增加 5,则使用向下箭头需要 15 次),事件不会触发.
有没有一种快速的方法来解决这个相当轻微的问题(IOW,如果需要一些非常神秘和棘手的事情来完成它,我不会打扰)。
要发生 ValueChanged 事件,可以在代码中更改值 属性,方法是单击向上或向下按钮,或者用户输入一个由控件读取的新值。当用户按下 ENTER 键或导航离开控件时,将读取新值。如果用户输入一个新值,然后单击向上或向下按钮,ValueChanged 事件将发生两次。
我会使用包含最新值的 sender.Value。您必须将其转换为发件人的类型。
对于 numericUpDown 组件:
((System.Windows.Forms.NumericUpDown)(sender)).Value.ToString()
我将代码附加到两个 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;
}
}
当我使用控件的 up/down 箭头更改编辑框中的值时,这很有效;但是如果我手动编辑该值(例如,当我想将它从 100 更改为 25 时,并且可以在六次击键中手动完成,而增加 5,则使用向下箭头需要 15 次),事件不会触发.
有没有一种快速的方法来解决这个相当轻微的问题(IOW,如果需要一些非常神秘和棘手的事情来完成它,我不会打扰)。
要发生 ValueChanged 事件,可以在代码中更改值 属性,方法是单击向上或向下按钮,或者用户输入一个由控件读取的新值。当用户按下 ENTER 键或导航离开控件时,将读取新值。如果用户输入一个新值,然后单击向上或向下按钮,ValueChanged 事件将发生两次。
我会使用包含最新值的 sender.Value。您必须将其转换为发件人的类型。
对于 numericUpDown 组件:
((System.Windows.Forms.NumericUpDown)(sender)).Value.ToString()