[英]Fading color in a loop with C#
我正在嘗試將文本框的顏色更改為綠色,然后淡出為白色作為確認方法。 這是我到目前為止的代碼:
private void btnCommit_Click(object sender, EventArgs e)
{
//do stuff
Color c = new Color();
for (int i = 0; i <= 255; i++)
{
c = Color.FromArgb(i, 255, i);
textBox1.BackColor = c;
System.Threading.Thread.Sleep(10);
}
}
沒用 看來我只需要等待2.5秒鍾,然后我才能做其他任何事情,但顏色始終保持白色。
Thread.Sleep
阻止您的UI線程(如果像您的情況那樣使用UI線程執行),則必須使用Task.Delay()
並使您的方法async
以使UI響應並查看褪色的動畫:
private async void btnCommit_Click(object sender, EventArgs e)
{
//do stuff
Color c = new Color();
for (int i = 0; i <= 255; i++)
{
c = Color.FromArgb(i, 255, i);
textBox1.BackColor = c;
await Task.Delay(10);
}
}
請注意,捕獲當前上下文,執行延遲然后恢復上下文所花費的時間可能會花費相同的時間(大約20ms
),以實現較小的延遲( 1ms
對20ms
)。 因此,您可能需要稍微增加延遲,以注意不同延遲之間的差異。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.