C#winforms numericupdown控件

时间:2010-03-03 04:47:44

标签: c#

我正在使用numericupdown控件。当以编程方式分配值或用户更改值时,将触发ValueChanged事件。

我希望仅在用户更改值时触发事件,而不是在我设置最小值和最大值时触发事件。怎么办呢?

2 个答案:

答案 0 :(得分:4)

以TheVillageIdiot的答案为基础......您可以创建一个可重用的子类,如:

public sealed class MyNumericUpDown : NumericUpDown {

    private bool suppress;

    protected override void OnValueChanged(EventArgs e) {
        if (!suppress) {
            base.OnValueChanged(e);
        }
    }

    public void SetRange(decimal min, decimal max) {
        suppress = true;
        try {
            Minimum = min;
            Maximum = max;
        }
        finally {
            suppress = false;
        }
    }

}

答案 1 :(得分:3)

尝试这样的事情:

var changeFromCode = false;

void abc()
{
   // This is where you change value in code.
   changeFromCode = true;
   ud1.Value = 15;
   changeFromCode = false;
}

// Sorry, I am not sure about handler signatures
void UpDownValueChanged(object sender, EventArgs e)
{
   if (changeFromCode)
       return;
}