2010-07-13 5 views
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); 
     } 
    } 
} 
+2

코드 (특히 두 목록)에서 자세히 살펴 만들기위한 - 당신이 * 아이디 *보다는 양식을 제거하는 것처럼 - Remove 호출 후에는 세미콜론이 없습니다. 문제를 보여주는 짧지 만 완전한 프로그램을 제공해주십시오. 그러면 도움이 될 것입니다. –

+0

세미콜론을 추가했습니다. 불쌍한 문자형을 사용해서 죄송합니다. 다시 한 번, 실제로 두 개의 목록이 있습니다. ListForms에 양식이 포함되어 있습니다. OpenForms에는 ID가 포함되어 있습니다. – sooprise

+0

안녕하세요, 기본적으로 여기에 같은 질문을 보내 셨습니다. http : //stackoverflow.com/questions/3233008/invoking-something-twice-leads-to-protected-override-void-dispose –

답변

1

좋아, 나는 바보입니다. 양식을 삭제했지만 목록에서 삭제하지 않았습니다. 이제 코드 행을 추가하고 이제는 수정되었습니다.

편집 : 감사합니다 존 날이 유효 코드처럼 보이지 않는

관련 문제