在C#中,无论值是由用户直接更改还是由于其他事件而以编程方式更改,都会触发控件的Changed事件(例如,numericupdown)。

有没有办法确定事件是否由于用户输入而发生?例如,手动更改numericalUpDown1的值并单击button1都将显示“值已更改”。如果仅通过用户单击控件中的向上/向下箭头而不是通过单击button1来更改“值更改”,我只想显示“值更改”怎么办?

    private void numericUpDown1_ValueChanged(object sender, EventArgs e)
    {
        MessageBox.Show("value changed");
    }

    private void button1_Click_1(object sender, EventArgs e)
    {
        numericUpDown1.Value = 3;
    }

最佳答案

没有很好的方法来做到这一点。您可以找到针对特定情况的解决方法,例如

  • 在数字下拉列表上监听MouseDown或其他内容,而不是valueChanged。
  • 在按钮单击事件处理程序中设置一个标志,该标志将禁止显示消息框。
    通常,您应该尝试以某种方式组织表单,而无论在何处更改值都无关紧要。
  • 10-06 06:44
    查看更多