【问题标题】:I want to change backcolor every 1 second in winform using timer我想使用计时器在winform中每1秒更改一次背景色
【发布时间】: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;
}

【问题讨论】:

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

标签: c# multithreading winforms timer


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2021-06-17
    • 1970-01-01
    • 2014-12-31
    • 2015-03-02
    • 2021-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多