当我调用form.dispose()
表单时,总是调用Validating事件并显示MessageBox消息。
我如何防止在执行form.dispose()
时不会触发Validating事件。我在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();
}
}