gpt4 book ai didi

c# - form.dispose() 总是调用验证事件并显示弹出消息

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

当我调用 form.dispose() 表单时,总是调用 Validating 事件并显示 MessageBox 消息。当 form.dispose() 正在执行时,我如何防止验证事件不会触发。我在 Validating 事件中有 MessageBox.Show() 消息,所以当 form.Dispose() 执行时它们总是在最上面。

这甚至可以在退出时阻止吗?我正在使用紧凑型框架 3.5

代码:

public static void Close<T>(string formName) where T : Form
{
Form f = null;
if (Dict.TryGetValue(formName, out f))
{
Dict.Remove(formName);
f.Dispose();
}
}

和验证事件

private void acPredmetObravnave_Validating(object sender, CancelEventArgs e)
{
if (....)
{
MessageBox.Show("Error");
}
}

最佳答案

一个简单的解决方案是:

public class MyForm: Form
{
public InternalClose = false;

// Your code...


private void acPredmetObravnave_Validating(object sender, CancelEventArgs e)
{
if (InternalClose ) return;
if (....) MessageBox.Show("Error");
}
}

然后

public static void Close<T>(string formName) where T : MyForm
{
MyForm f = null;
if (Dict.TryGetValue(formName, out f))
{
Dict.Remove(formName);
f.InternalClose = true;
f.Close();
f.Dispose();
}
}

关于c# - form.dispose() 总是调用验证事件并显示弹出消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7913821/

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