【发布时间】:2017-01-06 04:36:49
【问题描述】:
我正在使用 numericupdown 控件。当以编程方式分配值或用户更改值时,会触发 ValueChanged 事件。
我希望仅在用户更改值时触发事件,而不是在我设置最小值和最大值时触发。怎么办?
【问题讨论】:
标签: c#
我正在使用 numericupdown 控件。当以编程方式分配值或用户更改值时,会触发 ValueChanged 事件。
我希望仅在用户更改值时触发事件,而不是在我设置最小值和最大值时触发。怎么办?
【问题讨论】:
标签: c#
以 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;
}
}
}
【讨论】:
试试这样的:
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;
}
【讨论】: