我想使用计时器在winform中每1秒更改一次背景色

Posted

技术标签:

【中文标题】我想使用计时器在winform中每1秒更改一次背景色【英文标题】:I want to change backcolor every 1 second in winform using timer 【发布时间】:2019-10-12 03:23:55 【问题描述】:

我想在 winform 中使用计时器每 1 秒更改一次背景色。例如红色 -> SystemColors.Control -> 红色 -> SystemColors.Control ->..

我在 mainUI 中有菜单项。所以当我点击这个控件时,我希望看到 mainUI 的背景颜色自动变化。

这是我写的代码。我应该在这段代码中更改什么?

private void RadMenuItem9_Click(object sender, EventArgs e)

    System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();
    timer.Enabled = true;
    timer.Interval = 2000;
    timer.Tick += new EventHandler(Timer1_Tick);
    timer.Start();


private void Timer1_Tick(object sender, EventArgs e)

    BackColor = Color.Red;
    Thread.Sleep(1000);
    BackColor = SystemColors.Control;

【问题讨论】:

移除休眠,因为它只是阻塞,实现一个逻辑,该逻辑有一个标志来说明颜色是否应该设置为红色,或者检查当前颜色并根据它进行切换 谢谢!我没有考虑过制作开关逻辑。我提出了逻辑,它有效!谢谢你的建议。 【参考方案1】:

您需要制定切换颜色的逻辑。在这里,由于您想在两种颜色之间进行更改,您可以检查当前颜色并切换到另一种颜色。您不能使用Sleep,因为这会阻塞 UI 线程,并且当线程被阻塞时屏幕上不会显示任何更改。

【讨论】:

以上是关于我想使用计时器在winform中每1秒更改一次背景色的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MVC 4 中每 3 秒刷新一次局部视图?

winform 中如何获取计时器控件的值

javascript css3每2秒改变一次背景颜色

如何在ios中每n秒获取一次位置更新

如何使用协程在android中每1秒检查一次GPS可用性

在 jQuery 中每 5 秒调用一次函数的最简单方法是啥? [复制]