gpt4 book ai didi

c# - 我可以更改表单控件值但不触发事件吗?

转载 作者:行者123 更新时间:2023-12-02 08:56:59 25 4
gpt4 key购买 nike

这个要求可能很难,但我会尽力而为。 SO 和其他地方有很多关于在变化时触发事件的内容,但我想要相反的东西(至少我认为我这样做!)。

我的表单上有多个控件 (numericUpDowns)。对于每个 updown,我都会观察值是否已更改,并且它将触发“ValueChanged”方法。

private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
//do some complicated code ...
}

对于上下控件的更改会导致重新计算 fomr,这一切都运行良好,但是如果我想在方法中设置一些值并且不调用我的 ValueChanged 方法,直到结束?

我几乎想要这样的东西

// start ignoring form events here
numericUpDown1.Value = 500;
numericUpDown2.Value = 50;
numericUpDown3.Value = 0;
// resume detecting form events here !

有办法打开和关闭它吗?这是我应该担心的事情吗?

我有限的 C# 知识让我达到这一点的最好方法是创建一个名为“bIgnoreEvents”的变量,并在我的每个 ValueChanged 方法中使用它。 .

private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
if (!bIgmoreEvents)
{
//do some complicated code ...
}
}

这会跳过代码,但看起来很困惑。有没有更简单的方法?

最佳答案

您也可以这样做:

var eventHandler = new EventHandler((o, a) =>
{
//do stuff
});

numericUpDown1.ValueChanged += eventHandler;

//normal behaviour

//remove eventHandler
numericUpDown1.ValueChanged -= eventHandler;

numericUpDown1.Value = 500;
numericUpDown2.Value = 50;
numericUpDown3.Value = 0;

//add eventHandler
numericUpDown1.ValueChanged += eventHandler;

关于c# - 我可以更改表单控件值但不触发事件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11610969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com