2012-10-02 1 views
0

모달 양식을 닫지 않고 (다른 양식에 초점을 설정하지 않고) 저장 확인 메시지를 표시하는 가장 좋은 방법은 무엇입니까?C# 양식을 남기는 동안 확인 메시지 저장

사용자는

  • 은 (활성 형태를 유지 취소 (양식을 대상으로 롤백 및 설정 초점)

    • 네의 옵션 (변경 사항을 저장하고 targetform로 설정 초점)
    • 더있다 - 취소 대상 형식에 포커스 설정)

    포커스를 다른 형식으로 설정하지 못하게하는 해결책을 찾을 수 없습니다. closing 이벤트와 비슷하게 FormClosingEventArgs.Cancel 속성을 사용할 수 있습니다.

    내 경우 모달 형식을 사용하는 것은 허용되지 않습니다. 사전에

    덕분에 모든

  • +4

    어떤 방법으로 찾았습니까? 시도 했습니까? 또는 처음에 사용하려고 시도한 솔루션에 대해 해결하지 못한 점은 무엇입니까? –

    +1

    @ O.R.Mapper의 주석 번역은 "스택 오버플로에 사용 된 규칙 중 일부에 대해 읽으셨습니까?"입니다. :) –

    +0

    주요 문제 : 포커스를 다른 형식으로 설정하지 못하게하는 해결책을 찾을 수 없습니다. – donhauro

    답변

    0

    먼저 폼이 포커스를 잃을 때를 감지하는 Deactivated 이벤트를 사용할 수 있습니다. 그런 다음 사용자가 포커스를 잃은 양식에 머물러려면 BringToFront 메서드를 호출하여 양식을 다시 활성화로 설정할 수 있습니다.

    사용자가 다른 양식을 활성화하는 것을 방지 할 수는 없지만 위의 방법을 사용하여 활성화를 다시 현재 양식으로 변경할 수 있습니다.

    +0

    고마워요. 그것은 작동합니다. 비활성화 된 이벤트에 메시지 상자를 표시하면 여전히 하나의 문제가 남아 있습니다. 따라서 MessageBox는 포커스를받습니다. 확인 대화 상자가 끝나면 초점은 원래 대상 양식이 아닌 활성 양식으로 다시 설정됩니다. MessageBox.Show() 메서드에서 IWinOwner 매개 변수를 사용해야한다고 생각하지만 대상 폼을 가져 오는 방법을 모르겠습니다. – donhauro

    0

    가장 좋은 방법은 OnLostFocus 이벤트를 재정의하는 것입니다. 코드는 다음과 같습니다.

    protected override void OnLostFocus(EventArgs e) { 
        base.OnLostFocus(e); 
        this.Focus(); 
    }