我已經創建了一個C#Winforms應用程序。在C#中運行時更新UI?
在這個應用程序中,我在ShowDialog模式下打開了一個窗體,當點擊OK按鈕時,它啓動從GridView到數據庫導入聯繫人的過程(行數可能高達15,000)。
問題是,當導入過程開始時,我在循環中遞增progressBar的值,但如果表單失去焦點並且我再次將焦點設置爲該表單,那麼進度條不會更新。
如何更新進度條,即使形式失去焦點?
我已經創建了一個C#Winforms應用程序。在C#中運行時更新UI?
在這個應用程序中,我在ShowDialog模式下打開了一個窗體,當點擊OK按鈕時,它啓動從GridView到數據庫導入聯繫人的過程(行數可能高達15,000)。
問題是,當導入過程開始時,我在循環中遞增progressBar的值,但如果表單失去焦點並且我再次將焦點設置爲該表單,那麼進度條不會更新。
如何更新進度條,即使形式失去焦點?
使用Application.DoEvents()
飄飛,但你真的應該使用BackgroundWorker
,以防止這種情況發生。
並感謝兩個downvotes瞞着原因。 :) – CodeCaster
我想你是因爲'Application.DoEvents' – username
@username的downvoted:是'Application.DoEvents()'不好?它會導致一個不時響應的「不響應」應用程序。 –
的WinForms或WPF應用程序? ANYWAY答案是 - 從一個單獨的線程做,有很多同樣的問題 - 嘗試搜索 – sll
使用一個BackgroundWorker。看看[這裏] [1]。 [1]:http://stackoverflow.com/questions/1259949/how-do-i-implement-a-progress-bar-in-c – sloth