我創建一個C#窗口窗體和IVE來解決問題。顯示狀態欄第一個顯示進度
當窗口打開時,我想運行一些代碼,可以使前臺控制檯顯示凍結。代碼運行良好,但我想在頁面底部的狀態欄中顯示程序的狀態。我正在運行Form.Shown動作中的代碼。但是,代碼不會更新狀態欄,直到顯示所有內容。我可以更改標籤沒有問題。
我將如何去加載窗口,然後運行代碼並更新狀態欄(如後臺任務)?
需要查看哪些區域才能獲取此信息?
我創建一個C#窗口窗體和IVE來解決問題。顯示狀態欄第一個顯示進度
當窗口打開時,我想運行一些代碼,可以使前臺控制檯顯示凍結。代碼運行良好,但我想在頁面底部的狀態欄中顯示程序的狀態。我正在運行Form.Shown動作中的代碼。但是,代碼不會更新狀態欄,直到顯示所有內容。我可以更改標籤沒有問題。
我將如何去加載窗口,然後運行代碼並更新狀態欄(如後臺任務)?
需要查看哪些區域才能獲取此信息?
你可以使用一個BackgroundWorker
做到這一點
設置WorkerReportsProgress
屬性爲true,並在DoWork的事件處理程序提高ReportProgress事件
在事件處理的ProgressChanged把你的邏輯來更新您的progresbar
你會在哪裏推薦開始後臺進程?在chown事件? – NoLiver92 2014-12-13 18:23:37
取決於當你希望當你希望程序啓動時,如果你希望它只在表單顯示時啓動,使用Shown事件,如果你希望它在你創建表單時開始,請在構造函數 – grabthefish 2014-12-13 18:28:26
歡呼,在另一個note上我正在嘗試更新一個複選框列表,將更多的項目分配給它,但它會產生一個錯誤。 this.checklist.Items.Add(listarray [J]);這是我想要做的事情,並且我需要讓它線程安全。任何想法如何? – NoLiver92 2014-12-13 18:58:04
您可以使用Multithreading來避免凍結窗體。這意味着,您可以在不同的線程中將表單和代碼(並行運行)分開,以便表單不會等待代碼完成。您可以通過事件監視代碼的進度。
你可以使用'Application.DoEvent()',但我建議你使用'BackgroundWorker' – dotctor 2014-12-13 17:57:09