此程式片段用來呈現Form背景七彩閃爍的效果
while (this.Visible)
{
for (int c = 0; (c <>this.Visible); c++)
{
this.BackColor = Color.FromArgb(c, 255 - c, c);
Application.DoEvents();
System.Threading.Thread.Sleep(1);
}
for (int c = 254; (c >= 0) && (this.Visible); c--)
{
this.BackColor = Color.FromArgb(c, 255 - c, c);
Application.DoEvents();
System.Threading.Thread.Sleep(3);
}
}
若沒有加上 Application.DoEvents();
則會發現不但背景顏色不會改變
且整個視窗都會當掉, 那是因為進入無線迴圈
視窗根本沒機會去處理重繪的訊息
因為所有關於視窗控制觸發的訊息, 都堆在windows訊息佇列上
所以我們必須在回圈內加上"處理windows訊息"
讓程式有機會去處理
沒有留言:
張貼留言