gpt4 book ai didi

c# - 如何在没有 bool 标志的情况下处理用户改变主意?

转载 作者:太空宇宙 更新时间:2023-11-03 16:42:22 25 4
gpt4 key购买 nike

我的应用程序中有一个 NumericUpDown,但它很危险。更改值时,整个文档将被删除。因此,我想给用户一个警告(即使他不小心点击了 OK 他也可以撤消它。)

问题是,似乎我唯一可以处理的事件就是 ValueChanged 事件,而我最终会得到这样的代码。

private bool ignoreValueChanged = false;

private void numFoobar_ValueChanged(object sender, EventArgs e)
{
if (ignoreValueChanged)
{
ignoreValueChanged = false;
return;
}

if (MessageBox.Show("This will erase the entire document. Are you sure?", "Confirmation", MessageBoxButtons.OKCancel) == DialogResult.Cancel)
{
ignoreValueChanged = true;
numFoobar.Value = oldValue; // The ValueChanged event gets called again =/
return;
}

// More code
}

必须有更好的方法。我希望验证会有所帮助,但它只在关闭看起来的表单时被调用。

最佳答案

哦,你可以在重置它的值之前删除订阅到 numericUpdown 控件的事件,在重置它之后再次订阅它。这样,当您重置值时不会调用该事件。

但我也在考虑如何检查该事件是否已被订阅。但上述方法只给了你一半的解决方案。

我在这里试了一下,它似乎有效,但我似乎无法弄清楚如何检查是否已经订阅了相同的事件。

void NumericUpDown1ValueChanged(object sender, EventArgs e)
{
if(numericUpDown1.Value > 10)
{numericUpDown1.ValueChanged -= new System.EventHandler(this.NumericUpDown1ValueChanged);
numericUpDown1.Text = "5";
}
else numericUpDown1.ValueChanged += NumericUpDown1ValueChanged;//Here i need to first check if already it is subscribed or not before such that i dont want to subscribe double time
}

关于c# - 如何在没有 bool 标志的情况下处理用户改变主意?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7117429/

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