我正在使用numericupdown控件。当以编程方式分配值或用户更改值时,将触发ValueChanged事件。
我希望仅在用户更改值时触发事件,而不是在我设置最小值和最大值时触发事件。怎么办呢?
答案 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;
}