他の誰かが私と同じような質問をしました。しかし、彼らは実際に有効な答えを得られませんでした。bool を作成し、if ステートメントに入ったら false に設定することで、これを機能させることができます。その方法を使用する前にそれを行いましたが、よりクリーンな方法があるかどうか知りたいです。
質問: シンプルな [OK] ボタンを備えたタイマーでメッセージ ボックスを使用すると、誰かが [OK] をクリックしなければならないのはなぜですか。そうしないと、毎秒同じメッセージが表示されますか? 以下のコードでは; タイマーが設定されているため(1秒刻み)、1秒ごとにポップアップしますが、以下のコードのようにタイマーが10に達したときに1回だけ表示する必要がありますが、タイマーはまだ「刻んでいる」必要がありますラベルに表示されるからです。
何らかの理由で人々がここでやりたいと思っていることに気づいたので、誰かが私を細断する前に。私のロジックでは、秒 = 10 なので、1 回表示する必要があります。秒 = 11 の場合、10 ではなく 11 であるため、追加のボックスを表示しても意味がありません。その原因も知りたいですか?
private void randomtimer_Tick(object sender, EventArgs e)
{
if (seconds == 10)
{
MessageBox.Show(this,"Why does this message display every one second over and over until someone clicks close or okay?");
}
seconds++;
if (seconds >= 60)
{
seconds = 0;
minutes = minutes + 1;
}
if (minutes >= 60)
{
minutes = 0;
hours = hours + 1;
}
string niceTime = string.Format("{0:D2}h:{1:D2}m:{2:D2}s", hours, minutes, seconds); //format the time so it displays nicely
label2.Text = "Session Length:\n" + niceTime;
}