gpt4 book ai didi

c# - 计时器和按钮问题

转载 作者:太空狗 更新时间:2023-10-29 23:30:20 25 4
gpt4 key购买 nike

我正在使用 C# 使用 Visual Studio 2013 做一个项目。我想让计时器从 120 分钟倒计时到 0 分钟,当它倒计时到 0 时,一个消息框会显示时间到了。我还希望在按下重置按钮时重置计时器。但是,当我按下重置按钮时,即使计时器已重置,我按下开始按钮后仍会出现“时间已到”消息框,并且计时器不会启动。请帮我。我是 C# 的新手,所以请尽量不要给我难以理解的复杂答案。另外,你会经常看到我,因为我会有更多问题要问。谢谢!! (这是我的代码。)

    private void startbutton_Click(object sender, EventArgs e)
{
timer.Enabled = true;
foreach (var button in Controls.OfType<Button>())
{
button.Click += button_Click;
timer.Start();
button.BackColor = Color.DeepSkyBlue;
}
}

private void stopandresetbutton_Click(object sender, EventArgs e)
{
button.BackColor = default(Color);
timer.Stop();
timeleft = 0;
timerlabel.Hide();
}

int timeleft = 120;
private void timer_Tick(object sender, EventArgs e)
{
if (timeleft > -1)
{
timerlabel.Text = timeleft + " minutes";
timeleft = timeleft - 1;
}
else
{
timer.Stop();
MessageBox.Show("Time's up!");
}
}

最佳答案

您的错误出在 stopandresetbutton_Click 方法中。您不应将 timeLeft 变量设置为 0。因为您想重置 计时器,您应该将其设置为 120(如果您的单位是分钟)。

您在 startbutton_Click 方法中将 timeLeft 变量设置为 120。这样它也能正常工作

更好的方法

你可以这样写一个属性

private int TimeLeft {
get {return timeLeft; }
set {
timeLeft = value;
timerlabel.Text = timeleft + " minutes";
}
}

通过这种方式,您可以将 TimeLeft 设置为某个值,标签的文本也会发生变化。这是因为您可能不记得在设置 timeLeft 的值后更改标签的文本。

关于c# - 计时器和按钮问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31624197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com