2011-09-21 5 views
2

두 개의 이벤트 핸들러가 동일한 양식의 단추에 연결되어 있습니다. 메서드가 실행되는 동안 폼을 비활성화하고 waitCursor를 표시 한 다음 폼을 활성화하고 커서를 다시 기본값으로 설정하려고합니다.동일한 양식의 두 이벤트 핸들러는 다르게 작동합니다.

이상한 부분이 있습니다. 거의 동일한 코드로 이러한 이벤트 중 하나가 작동하고 다른 이벤트는 작동하지 않습니다! 여기서 무엇이 잘못 될 수 있습니까?

이것은 작동합니다.

private void btnExceptionReport_Click(object sender, EventArgs e) 
    {    
     lblStatus.Text = "Printing exception report."; 

    ActiveForm.Cursor = Cursors.WaitCursor; 
    //Form.ActiveForm.Enabled = false; 

    if (DatabaseOps.printItemReport("Exceptions", cboEmployee.Text)) 
    { 
     lblStatus.Text = "Exception report printed."; 
    } 
    else 
    { 
     MessageBox.Show("Error printing exception report."); 
     lblStatus.Text = "Error printing Exception report."; 
    } 

    //Form.ActiveForm.Enabled = true; 
    ActiveForm.Cursor = Cursors.Default; 
} 

내가 ActiveFormnull이 아니라는, 다시 기본 커서를 변경하려고하면이 하나가 오류가 발생하는 동안

.

private void btnWIPReport_Click(object sender, EventArgs e) 
{  
    lblStatus.Text = "Printing WIP Materials report."; 

    ActiveForm.Cursor = Cursors.WaitCursor; 
    //Form1.ActiveForm.Enabled = false; 

    if (DatabaseOps.printItemReport("WIP", cboEmployee.Text)) 
    { 
     lblStatus.Text = "WIP Materials report printed."; 
    } 
    else 
    { 
     MessageBox.Show("Error printing WIP Materials report."); 
     lblStatus.Text = "Error printing WIP Materials report."; 
    } 

    //Form1.ActiveForm.Enabled = true; 
    ActiveForm.Cursor = Cursors.Default; //This line gives error saying ActiveForm is null 
} 

답변

1

ActiveForm으로 전화 할 필요가 없습니다. 간단하게이 작업을해야 사용 :

Cursor = Cursors.Default; 
+0

-이 기능이 작동합니다! 왜 그런지 알아? 이유를 설명해 주시겠습니까? 나는 여기에서 신비가있다. – MAW74656

+1

"WIP"보고서는 응용 프로그램에서 집중력을 떨어 뜨리고 있습니다. 그래서 ActiveForm은 null이기 때문에 어떤 폼도 활성화되어 있지 않습니다. –

+0

그래도 WIP가 예외적으로 예외 보고서를 작성하는 이유는 무엇입니까? – MAW74656

0

당신이 컨트롤에 정의 된 부울 속성 UseWaitCursor을 설정하기에 충분에만 표준 커서와 WaitCursor를 사용하는 경우.

코드 내에 'this'로 양식에 액세스 할 수있는 것 같습니다.

또는 '보낸 사람'을 Button (?)으로 캐스팅하고 입력 한 결과에서 FindForm() 메서드를 호출하면 폼을 액세스 할 수 있습니다 (선택 사항).

그리고 '처리'코드에서 예외가 발생해도 커서를 복원하려면 try/finally 블록을 추가해야합니다.

관련 문제