簡單描述一下問題,即我創建了一個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