【发布时间】:2017-11-22 14:21:12
【问题描述】:
为什么这个无限的彩虹背景循环不起作用,我在 C# Forms 中运行这段代码,想法是在你点击 button1 后让背景改变颜色。我尝试了不同的无限循环制造商,例如:for(;;)。但这里是代码:
private void button1_Click(object sender, EventArgs e)
{
while (true)
{
this.BackColor = System.Drawing.Color.Red;
System.Threading.Thread.Sleep(250);
this.BackColor = System.Drawing.Color.DarkRed;
System.Threading.Thread.Sleep(250);
this.BackColor = System.Drawing.Color.Orange;
System.Threading.Thread.Sleep(250);
this.BackColor = System.Drawing.Color.Yellow;
System.Threading.Thread.Sleep(250);
this.BackColor = System.Drawing.Color.Green;
System.Threading.Thread.Sleep(250);
this.BackColor = System.Drawing.Color.DarkGreen;
System.Threading.Thread.Sleep(250);
this.BackColor = System.Drawing.Color.Blue;
System.Threading.Thread.Sleep(250);
this.BackColor = System.Drawing.Color.DarkBlue;
System.Threading.Thread.Sleep(250);
this.BackColor = System.Drawing.Color.Violet;
}
谢谢。
【问题讨论】:
-
您运行此代码的应用程序类型是什么?
-
这个“不工作”是如何表现出来的?
-
这段代码在哪里运行?在
OnPaint? -
因为彩虹不是无限的。它们是由水的光折射引起的。 (换句话说,您需要添加更多信息 - 您正在构建什么样的应用程序等)
-
你永远不会给 UI 时间来显示任何东西;睡眠也会暂停 UI 线程。每次颜色更改后插入
this.Refresh()! - 顺便说一句,不太可能通过深红色从红色变为橙色。 redorange 会更合理,不是吗?