如何更改C#Windows窗体标签颜色1秒钟并重置标签颜色?

问题描述

我正在用Windows窗体制作“谁想成为百万富翁”游戏。我想在单击标签后变为橙色,然后变为绿色或红色。当我尝试这样做时,它无法正常工作。有时它们会在那里改变颜色,但是大多数时候它们不会改变。我想我没有为此使用正确的方法

您能帮我找到解决方法吗?

Answer_A_Text.BackColor = Color.Orange;
Thread.Sleep(1000);
if(IsAnswerTrue){
Answer_A_Text.BackColor = Color.Green;
Thread.Sleep(1000);
}
else {
Answer_A_Text.BackColor = Color.Red;
Thread.Sleep(1000);
}
{some code...}
Answer_A_Text.BackColor = Color.White;

解决方法

如@Luc所说,Sleep阻止了当前线程(此处为UI),并且控件的外观未实现。

您只需要在控件上添加一些Refresh调用即可获得所需的闪烁效果:

Answer_A_Text.BackColor = Color.Orange;
Answer_A_Text.Refresh();
Thread.Sleep(1000);
if ( IsAnswerTrue )
{
  Answer_A_Text.BackColor = Color.Green;
  Answer_A_Text.Refresh();
  Thread.Sleep(1000);
}
else
{
  Answer_A_Text.BackColor = Color.Red;
  Answer_A_Text.Refresh();
  Thread.Sleep(1000);
}
{ some code...}
Answer_A_Text.BackColor = Color.White;
// Not needed if it is the end: Answer_A_Text.Refresh();

Control.Refresh Method (MS Docs)