问题描述
我正在用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();