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

时间:2019-05-26 05:54:53

标签: c# multithreading winforms timer

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

我的mainUI中有menuitem。因此,当我单击此控件时,我想查看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 个答案:

答案 0 :(得分:1)

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