Короткий ответ
Из кода, который вы разместили, действительно только кажется, что вам нужно изменить код на отключить флажок в событии CheckChanged
и включить в timer1_Tick
событие (а также Stop
таймер в событии Tick
).
Полный ответ
Winforms имеет Timer
элемент управления, который вы можете использовать для этого. После добавления Timer
в конструктор установите для свойства Interval
количество миллисекунд, которое вы хотите подождать, прежде чем активировать флажок (1
секунда - 1000
миллисекунды, поэтому 15 минут - 15
мин * 60
сек / мин * 1000
мс / сек или 900,000
мс). Затем дважды щелкните его, чтобы создать обработчик события Tick
(или добавьте его в ваше событие Form_Load
, как я делал ниже).
Далее, в событии CheckChanged
, если флажок не установлен, отключите флажок и запустите таймер.
Затем в событии Tick
просто установите флажок (помните, что это событие срабатывает после того, как прошло Interval
миллисекунд) и остановите таймер.
Например:
private void Form1_Load(object sender, EventArgs e)
{
// These could also be done in through designer & property window instead
timer1.Tick += timer1_Tick; // Hook up the Tick event
timer1.Interval = (int) TimeSpan.FromMinutes(15).TotalMilliseconds; // Set the Interval
}
private void timer1_Tick(object sender, EventArgs e)
{
// When the Interval amount of time has elapsed, enable the checkbox and stop the timer
checkBox1.Enabled = true;
timer1.Stop();
}
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (!checkBox1.Checked)
{
// When the checkbox is unchecked, disable it and start the timer
checkBox1.Enabled = false;
timer1.Start();
}
}