最初のフォームにTimerコントロール(およびボタン)があります。親フォームでTimerを停止する方法(C#)
ユーザーがボタンをクリックすると、モーダルフォームのボタンをクリックしたときにタイマーを停止するかどうかを質問する新しいボタン付きの新しいモーダルウィンドウが表示されます。
私はそれをどのように達成することができますか?
最初のフォームにTimerコントロール(およびボタン)があります。親フォームでTimerを停止する方法(C#)
ユーザーがボタンをクリックすると、モーダルフォームのボタンをクリックしたときにタイマーを停止するかどうかを質問する新しいボタン付きの新しいモーダルウィンドウが表示されます。
私はそれをどのように達成することができますか?
質問に答えてフォームに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を。
は、ユーザーが押された場合bStopTimer
と呼ばれる第二の形でBoolean
プロパティを宣言し、「はい」、あなたは子フォームを閉じるとFalse
、childForm.bStopTimer
をチェックし、に従って行動、True
他 にbStopTimer
を設定それに。
モーダルフォームでパブリックブール値プロパティを宣言します。ブール値は、このメソッドを使用して
While not MyVal = true
ModalForm.show
End While
真になるまで は、メインフォームからあなたはループを使用し、あなたも開始したり、メインとモーダルフォームからあなたのタイマーを停止することができます。 あなたはポイントを得るでしょう:)
おはようございます!
あなたが最初のフォームのタイマーを受信する第二のフォームにプロパティを追加することができます。
private Timer timer;
public frmModal(Timer tmrref)
{
this.timer = tmrref;
InitializeComponent();
}
あなたがモーダルフォームを表示するとき、あなたはタイマーを渡すことができます。
frmModal frm = new frmModal(this.timer1);
frm.ShowDialog();
と上ボタンをクリックしてモーダルフォームをクリックするだけで、タイマーを停止するだけです。
timer.Stop();
WinformsまたはWPF?いくつかのソースコードは質問を理解するのに役立ちます。 – alf