解決.NET程序中同一按鈕單擊事件中屢次刷新Label時只有最後一次賦值生效的問題

簡單描述一下問題,即我創建了一個Winform工程,有一個窗體FormMain,其中有一個Label(lblTest)和一個Button(btnRefreshLabel),以下圖所示:函數

其中單擊按鈕後會執行如下代碼:this

private void btnRefreshLabel_Click(object sender, EventArgs e)
{
    this.lblTest.Text = "加載中……\n" + DateTime.Now.ToString();
    System.Threading.Thread.Sleep(3000);
    this.lblTest.Text = "加載完畢\n" + DateTime.Now.ToString();
}

先更新Label的文字到「加載中」,執行完一段3000毫秒的代碼後,將Label的文字設置爲「加載完畢」。不過這樣寫有一個問題,就是這段代碼中的「加載中」永遠也不會顯示出來,點擊按鈕後,屏幕會卡死3秒鐘,而後直接刷出「加載完畢」。後來研究了下,這個問題的解決方法就是在每次更新Label的內容後當即執行一次Refresh函數:code

private void btnRefreshLabel_Click(object sender, EventArgs e)
{
    this.lblTest.Text = "加載中……\n" + DateTime.Now.ToString();
    this.Refresh(); //添加了這句話
    System.Threading.Thread.Sleep(3000);
    this.lblTest.Text = "加載完畢\n" + DateTime.Now.ToString();
}

程序運行截圖以下:orm

1)單擊按鈕後,Label顯示「加載中」。form

2)三秒後,Label顯示「加載完畢」。class

ENDobject

相關文章
相關標籤/搜索