2014-02-12 2 views
1

내 Winforms 앱은 하나 이상의 비 모달 보고서 뷰어 창을 시작해야 메인 창에서 모달 대화 상자를 열 수 있습니다. 나는 earlier article에 (H. 옆모습에 의해) 아래의 코드를 발견넌 모달 보고서 뷰어 창 시작

내 경우
private void button1_Click(object sender, EventArgs e) { 
    var t = new System.Threading.Thread(() => Application.Run(new Form2())); 
    t.SetApartmentState(System.Threading.ApartmentState.STA); 
    t.Start(); 
} 

는 "형식 2는"원하는 보고서를 표시하도록 설정 한 도킹 ReportViewer 컨트롤을 포함 [새 frmRptView (sReport, aRptParams) ].

내 테스트 중에는 모든 것이 잘 작동하는 것처럼 보였지만 테스터에게 빌드를 제공하면 뷰어 창이 잠기는 경우가 있었으며 로그 아웃하거나 재부팅하는 유일한 방법이있었습니다. 우리는 form.Show()도 같은 문제가있었습니다.

편집 : 모달이 아닌 창을 시작하여 주 앱 창과 독립적으로 작동하는 올바른 방법은 무엇입니까?

+0

문제를 진단하는 데 필요한 정보가 충분하지 않습니다. 자세한 내용을 제공해 주시겠습니까? – jww

+0

왜 정기적으로 새 창을 여는 데 충분하지 않습니까? –

+0

처음에는 form.Show()를 사용했지만, 응답하지 않게되었습니다. 나는 그 질문을 바꿔 말할 것이다. – kaborka

답변

0

메인 윈도우보다 긴 수명을 가진 넌 모달 윈도우를 보여 주기만하면 폼의 인스턴스를 생성하고 버튼 클릭 핸들러에서 표시하면됩니다. 이는 여러 UI 스레드를 만드는 것보다 간단하고 안전합니다.

private void button1_Click(object sender, EventArgs e) 
{ 
    (new Form2()).Show(); 
} 
+0

그게 제가 쓰레드 접근법을 시도하기 전에 사용했던 것입니다. 사용자는 뷰어 창이 응답하지 않는다고보고했습니다. 메인 윈도우에서 사용하는 모달 형식 때문일 것으로 생각했기 때문에 MT 방식을 시도했습니다. 나는 행동을 재현 할 수 없었습니다. 모덜이 아닌 뷰어 윈도우를 잠글 수있는 아이디어가 있습니까? – kaborka

+0

뷰어 창에 자원이 누출되거나 사용량이 급증한 것이 있는지 확인하십시오. 데이터가 검색되면 모든 연결에서 보고서를 쿼리 할 수 ​​있습니까? 응답하지 않는 보고서 뷰어 창이므로 문제를 해당 컨트롤 내부에서 조사해야합니다. –