2014-12-13 85 views
0

我創建一個C#窗口窗體和IVE來解決問題。顯示狀態欄第一個顯示進度

當窗口打開時,我想運行一些代碼,可以使前臺控制檯顯示凍結。代碼運行良好,但我想在頁面底部的狀態欄中顯示程序的狀態。我正在運行Form.Shown動作中的代碼。但是,代碼不會更新狀態欄,直到顯示所有內容。我可以更改標籤沒有問題。

我將如何去加載窗口,然後運行代碼並更新狀態欄(如後臺任務)?

需要查看哪些區域才能獲取此信息?

+0

你可以使用'Application.DoEvent()',但我建議你使用'BackgroundWorker' – dotctor 2014-12-13 17:57:09

回答

0

你可以使用一個BackgroundWorker做到這一點

設置WorkerReportsProgress屬性爲true,並在DoWork的事件處理程序提高ReportProgress事件

在事件處理的ProgressChanged把你的邏輯來更新您的progresbar

msdn

+0

你會在哪裏推薦開始後臺進程?在chown事件? – NoLiver92 2014-12-13 18:23:37

+0

取決於當你希望當你希望程序啓動時,如果你希望它只在表單顯示時啓動,使用Shown事件,如果你希望它在你創建表單時開始,請在構造函數 – grabthefish 2014-12-13 18:28:26

+0

歡呼,在另一個note上我正在嘗試更新一個複選框列表,將更多的項目分配給它,但它會產生一個錯誤。 this.checklist.Items.Add(listarray [J]);這是我想要做的事情,並且我需要讓它線程安全。任何想法如何? – NoLiver92 2014-12-13 18:58:04

0

您可以使用Multithreading來避免凍結窗體。這意味着,您可以在不同的線程中將表單和代碼(並行運行)分開,以便表單不會等待代碼完成。您可以通過事件監視代碼的進度。