2011-12-27 54 views
1

我在第一個窗體上有Timer控件(和一個Button)。如何停止父窗體上的計時器(C#)

想法是,當用戶點擊按鈕時,顯示帶有新按鈕的新模式窗口,並詢問他是否想要在點擊模式窗體按鈕時停止計時器。

你能幫我怎麼做到嗎?

+1

Winforms或WPF?一些源代碼也有助於理解這個問題 – alf 2011-12-27 11:25:16

回答

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.Show到confirmationForm.ShowDialog。

+0

'.Show'不會返回一個dialogResult。你的第一個例子需要一個解決方法,但想法是一樣的。 – nawfal 2011-12-27 11:37:40

+0

使用ShowDialog()將返回DialogResult – 2GDev 2011-12-27 11:46:19

+0

對不起,使用ShowDialog();. – 2011-12-27 11:48:08

0

名爲bStopTimer

如果用戶按下了第二個形式聲明一個Boolean財產「是」,設置bStopTimerTrue 否則,False

當您關閉子窗體,檢查childForm.bStopTimer並根據行動到它。

0

在模態窗體中聲明一個公共布爾屬性。 從主窗體你用一個循環,直到布爾值爲True

While not MyVal = true 
    ModalForm.show 
End While 

使用這種方法,您還可以啓動或從主模式表單停止你的定時器。 你會得到重點:)

問候!

1

您可以在第二個窗體上添加屬性接收第一形式的計時器:

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

然後,當您顯示模式窗體可以通過定時器:

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

和按鈕點擊模式窗體只需停止計時器:

timer.Stop();