处置第二次不处理表单?
问题描述:
我使用此方法根据它们的Id关闭窗体,但是如果我用Id 2打开窗体,关闭它一次,它工作正常,但如果我用Id 2再次打开窗体,它不会关闭窗体(表单只停留在屏幕上)。我不知道发生了什么,急切需要帮助。谢谢!处置第二次不处理表单?
public void OutsideClose(long Id)
{
if (InvokeRequired)
{
Invoke(new Action<long>(OutsideClose), Id);
}
else
{
var FormToClose = ListForms.Find(a=> a.Id == Id);
if(FormToClose != null)
{
FormToClose.Dispose();
OpenForms.Remove(Id);
}
}
}
答
好的,我很笨! 我正在处理表单,但我并没有从列表中删除它。现在我添加了一行代码来做到这一点,现在它已经修复了。
编辑:感谢乔恩让我看看代码(尤其是两个列表)
这看起来并不像有效的代码更接近 - 你看起来就像你要移除* ID *,而不是形式 - 并且您在删除呼叫后没有分号。请提供一个简短但完整的程序来说明问题 - 然后帮助您更容易。 – 2010-07-13 13:29:42
添加了分号,对不起转录抱歉,我也编辑了代码,因为你再次合适,实际上有2个列表,ListForms包含表单,OpenForms包含Id的 – sooprise 2010-07-13 13:31:57
嘿,你基本上问过同样的问题:http: //stackoverflow.com/questions/3233008/invoking-something-twice-leads-to-protected-override-void-dispose – 2010-07-13 14:35:42