簡體   English   中英

使用C#循環褪色

[英]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 ),以實現較小的延遲( 1ms20ms )。 因此,您可能需要稍微增加延遲,以注意不同延遲之間的差異。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM