gpt4 book ai didi

C# MessageBox 显示两次

转载 作者:行者123 更新时间:2023-11-30 20:36:31 25 4
gpt4 key购买 nike

我在 Windows 窗体上有几个组框,其中包含复选框、数字选择器和组合框。如果未选中该复选框,我希望禁用其他元素。我已经禁用了除加载复选框之外的所有内容,然后在 CheckedChanged 事件上编码了“if/else”标准,并且一切正常。然而,几个组框依赖于早期形式的另一个条件。因此,如果用户尝试选择该复选框但条件无效,我想显示一条消息,取消选中该复选框并禁用组框中的其他元素,直到用户返回并更改条件...或者只是接受事物保持现状并继续前进。一切都按预期工作,除了消息框显示两次,即显示、取消、再次显示......我在选中该框时思考一次,在未选中该框时再次思考(如果我只是将其选中,但是禁用后,该消息仅显示一次,但这有点难看。;-( 有更好的方法吗?

private void checkbox1_CheckedChanged(object sender, EventArgs e)
{
if(var1 == "YES")
{
if (checkbox1.Checked)
{
numbox.Enabled = true;
combobox1.Enabled = true;
}
else
{
numbox.Enabled = false;
combobox1.Enabled = false;
}
}
else
{
MessageBox.Show("Required condition is not YES");
checkbox1.Checked = false;
}
}

最佳答案

就像 @LarsTech 所说...您正在两次调用您的事件。这是一个可能的解决方法。只需在方法的开头删除事件即可。最后...再次添加。

private void checkbox1_CheckedChanged(object sender, EventArgs e)
{
checkbox1.CheckChanged -= checkbox1_CheckedChanged;
if(var1 == "YES")
{
if (checkbox1.Checked)
{
numbox.Enabled = true;
combobox1.Enabled = true;
}
else
{
numbox.Enabled = false;
combobox1.Enabled = false;
}
}
else
{
MessageBox.Show("Required condition is not YES");
checkbox1.Checked = false;
}
checkbox1.CheckChanged += checkbox1_CheckedChanged;
}

关于C# MessageBox 显示两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36850787/

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