2011-12-27 7 views
1

最初のフォームにTimerコントロール(およびボタン)があります。親フォームでTimerを停止する方法(C#)

ユーザーがボタンをクリックすると、モーダルフォームのボタンをクリックしたときにタイマーを停止するかどうかを質問する新しいボタン付きの新しいモーダルウィンドウが表示されます。

私はそれをどのように達成することができますか?

+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 
} 

EDIT使用:confirmationForm.ShowDialogに変更confirmationForm.Showを。

+0

'.Show'はdialogResultを返しません。あなたの最初の例には回避策が必要ですが、アイデアは同じです。 – nawfal

+0

ShowDialog()を使用するとDialogResultが返されます – 2GDev

+0

申し訳ありませんが、ShowDialog();を使用してください。 –

0

は、ユーザーが押された場合bStopTimer

と呼ばれる第二の形でBooleanプロパティを宣言し、「はい」、あなたは子フォームを閉じるとFalse

childForm.bStopTimerをチェックし、に従って行動、True他 にbStopTimerを設定それに。

0

モーダルフォームでパブリックブール値プロパティを宣言します。ブール値は、このメソッドを使用して

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(); 
関連する問題