2012-04-18 3 views
1

ProgressBar 컨트롤이있는 PolicyRefreshStatus.vb라는 vb.net windows 양식 응용 프로그램에 양식이 있습니다. EditPolicy.vb라는 기본 폼에서 EditPolicy.vb 상단에 PolicyRefreshStatus.vb를 표시해야합니다. 그러나 물건이 연결되는 방식은 ProgressBar를 제어하고 EditPolicy.vb 내부의 로직에서 단계입니다.모달 방식으로 다른 양식 위에 양식을 보관하고 있지만 계속 실행하십시오.

.show() 메소드를 사용하여 PolicyRefreshStatus.vb 막대를 표시하면 정상적으로 작동합니다. 문제는 사용자가 기본 폼을 클릭 한 다음 PolicyRefreshStatus.vb가 포커스를 잃는 경우입니다. PolicyRefreshStatus.vb를 .ShowDialog()를 사용하여 모달 폼으로 표시하면 .ShowDialog() 문 다음에 EditPolicy.vb에서 실행이 중단됩니다. 그래서 코드에서 예를 들어

:

mPolicyRefreshStatus = New PolicyRefreshStatus 
mPolicyRefreshStatus.pbMax = mPolicy.ClaimsUpdateMax 
mPolicyRefreshStatus.ShowDialog() 
mPolicy.UpdateFromFIS() 

라인 mPolicy.UpdateFromFIS()는 PolicyRefreshStatus 양식을 닫습니다 것이 기다리고 있기 때문에 결코 실행되지 않습니다.

모달 형식으로 PolicyRefreshStatus를 표시하지만 어떻게 EditPolicy.vb에서 실행을 계속할 수 있습니까?

+1

topmost을 true로 설정하면 도움이되지 않습니까? – gbianchi

답변

0

몇 가지 관련 옵션이 있습니다.

첫 번째 단계는 작업 단위를 인터페이스를 구현하는 위임자 또는 클래스 형태로 진행률 표시 줄에 전달하는 것입니다. (정확성 확인하지, 그냥 거친 예) 이런 식으로 뭔가 :

mPolicyRefreshStatus = New PolicyRefreshStatus 
mPolicyRefreshStatus.pbMax = mPolicy.ClaimsUpdateMax 
mPolicyRefreshStatus.UnitOfWork = AddressOf(mPolicy.UpdateFromFIS()) 
mPolicyRefreshStatus.ShowDialog() 

그런 다음 진행 양식 내에서 실제로 작업을 수행하는 루틴을 다시 호출 할 수 있습니다.

또 다른 방법은 ProgressForm에서 이벤트를 정의한 다음 소유/실행 개체가 작업을 처리 할 수 ​​있습니다.이 옵션을 사용하면 점진적 작업을 처리 할 수있는 상당히 자세한 이벤트 집합을 만들거나 취소하지만 개념은 동일합니다. Youu는 진행 형식에서 실행 프로그램으로 돌아가 실제 비즈니스 논리를 수행합니다.

+0

감사합니다. 나는 PolicyRefreshStatus에 mPolicy를 전달하고 그곳에서 일을 끝내었다 .... –

0

양식을 모달로 표시 할 수 없으며 루틴을 계속 진행할 수 없습니다. 비 모달로 양식을 보여 주어야하며, 다른 작업은 완료해야만 양식을 닫아야합니다. 작업이 완료 될 때까지 루프가 될 수 있습니까?

Show()를 부모 폼 매개 변수와 함께 사용하면 사용성이 향상됩니다. 도구 창과 비슷합니다.

관련 문제