1
我使用此方法根據它們的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