2011-12-27 9 views
1

첫 번째 폼에는 Timer 컨트롤 (및 Button)이 있습니다.부모 폼에서 Timer를 중지하는 방법 (C#)

사용자가 Button을 클릭하면 모달 폼 버튼을 클릭 할 때 타이머를 멈추고 싶으면 새로운 버튼이있는 새로운 모달 창이 표시됩니다.

어떻게 할 수 있습니까?

+1

Winforms 또는 WPF? 일부 소스 코드는 질문을 이해하는 데 도움이됩니다 – alf

답변

3

답변에 따라 질문에 대한 양식의 DialogResult를 설정하고 기본 대화 상자에서 결과를 확인할 수도 있습니다.

ConfirmationForm confirmationForm = new ConfirmationForm(); 

DialogResult dialogResult = confirmationForm.ShowDialog(); 
if (dialogResult == DialogResult.OK) 
{ 
    // Stop timer here 
} 

또는 표준 대화

DialogResult dialogResult = MessageBox.Show("Are you sure you want to stop the timer?", "Stop timer", MessageBoxButtons.YesNo); 
if (dialogResult == DialogResult.Yes) 
{ 
    // Stop timer here 
} 

편집 사용 confirmationForm.ShowDialog에 변경 confirmationForm.Show합니다.

먼저 양식의 타이머받을 수있는 2 양식에 속성을 추가 할 수 있습니다
+0

'.Show'는 dialogResult를 반환하지 않습니다. 귀하의 첫 번째 예제는 해결 방법이 필요하지만 그럼에도 불구하고 아이디어는 같습니다. – nawfal

+0

ShowDialog()를 사용하면 DialogResult가 반환됩니다. – 2GDev

+0

죄송합니다. ShowDialog();를 사용하십시오. –

0

사용자가 누른 경우 bStopTimer

라는 2 형태로 Boolean 속성을 선언 "예", 당신은 자식 폼을 닫을 때 False

, childForm.bStopTimer을 확인하고 따라 행동, True 다른 에 bStopTimer 설정 그것에.

0

모달 형식에서 공용 부울 속성을 선언하십시오. 부울 값이이 방법을 사용

While not MyVal = true 
    ModalForm.show 
End While 

참이 될 때까지 는 기본 폼에서 당신이 루프를 사용하여, 당신은 또한 시작하거나 주와 모달 폼에서 타이머를 중지 할 수 있습니다. 당신은 요점을 얻을 것이다 :

인사말!

1

:

frmModal frm = new frmModal(this.timer1); 
frm.ShowDialog(); 

과에 : 당신이 모달 폼 당신이 타이머를 전달할 수 올라올 때 다음

private Timer timer; 
    public frmModal(Timer tmrref) 
    { 
     this.timer = tmrref; 
     InitializeComponent(); 
    } 

을 단추를 클릭하면 모달 폼이 단순히 타이머를 멈추게됩니다.

timer.Stop(); 
관련 문제