이 메시지는 This one과 매우 비슷한 문제입니다.긴 계산 후 MessageBox가 mdi 형식으로 표시되지 않습니다.
MDI 메인 포럼에 여러 어린이 양식이 있습니다. 그 중 하나는 긴 계산을 수행하고 오류가 발생하면 예외를 던집니다 (모든 작업은 동일한 스레드에서 수행됩니다). 그런 다음 메시지 상자에 오류가 있음을 사용자에게 알리려고하지만 표시되지 않습니다 (그러나 MDI Main에서 포커스를 훔쳐 응용 프로그램이 완전히 응답하지 않습니다).
Application.DoEvents()를 호출하면 beheviour가 약간 변경됩니다 (악의적 인 것은 알지만 이것이 최후의 수단입니다). 그런 다음 양식은 완전히 활성 상태로 유지되고 메시지 상자는 활성 응용 프로그램 (Alt + Tab)을 다른 것으로 변경 한 후 다시 표시 한 후에 만 나타납니다.
메시지 상자가 표시되도록하려면 어떻게해야합니까? MessageBox.Show 메서드에 매개 변수로 활성 자식 및 MDI Main을 모두 전달하려고 이미 시도했습니다. 행동을 바꾸지 않습니다.
는 명확히하기 : 메시지 박스가 자식 폼의 일부입니다, 그러나이 시점에서 내가하지 휴식 응용 프로그램을 수행 어떤 방법으로 그것을 보여 기꺼이. messagebox는 모달이어야하지만 사용자가인지 할 수 있도록 표시되어야합니다.
그래도 문제가 있습니까? – ChrisBD
다른 스레드를 사용하여 messagebox를 표시하는 해결 방법을 작성했습니다. 나는 아직도이 질문에 답을 얻지 못했고 해결책은 해결 방법이므로 내 자신의 질문에 대답하기 위해 사용하지 않을 것이라고 생각합니다. –