我一直在試圖解決這個問題,它似乎是一個來自.Net框架的問題。無論如何,我有一個列表視圖,其中包含5000多個項目和一個按鈕,用於對列表視圖中的所選項目進行進一步處理。現在單擊此按鈕也應該將listview的「listview.HeaderStyle」屬性設置爲「ColumnHeaderStyle.Nonclickable」。 現在當我這樣做。該程序掛起了10秒鐘,然後繼續其工作。我不知道是什麼原因導致這種情況發生。我希望你們有這個解決方案。 有什麼想法?爲什麼更改ListView的HeaderStyle會掛起應用程序?
回答
我已經找到了基本解決,現在,我需要的是設置
myListview.ColumnClick += new ColumnClickEventHandler(delegate{});
現在我不需要再更改「listview.HeaderStyle」屬性。 基本上我是從HeaderStyle
屬性禁用ColumnClick
事件,就這些。所以不要將HeaderStyle設置爲nonClickable。我只是刪除/更改事件處理程序中的函數。
您可以使用BackgroundWorker
MSDN解決此問題。
注意:即使使用此解決方案您的表單將掛起一段時間。因爲你有5000+項目要綁定到列表,這將阻止你的UI線程,因此winform將掛起。但你的listview.HeaderStyle
將被修改。
試試這個
- 在按一下按鈕,你的
listview.HeaderStyle
的PROPERT直接切換到ColumnHeaderStyle.Nonclickable
。然後撥打電話RunWorkerAsync
的BackgroundWorker
。 - 對
DoWork
事件處理程序你做了處理,並且一旦完成將數據綁定到列表視圖。爲此,您需要將以下擴展類添加到您的項目中。
擴展類
public static class ControlExtensions
{
public static void Invoke(this Control control, Action action)
{
if (control.InvokeRequired) control.Invoke(new MethodInvoker(action), null);
else action.Invoke();
}
}
使用這個你可以將數據綁定到ListView的
listview.Invoke(() => (listview.DataSource = dataSource; });
希望這對你的作品。
感謝您的想法..但它確實沒有太大區別..我只是想到另一個更簡單的解決方案,它可能不會阻止任何東西......它將Columnclick事件更改爲空函數。 – SolidSnake 2012-02-03 04:52:31
這就是想法,你在後臺線程上做所有的計算,並保持你的UI線程不受它影響。 UI線程應該只處理渲染部分,而不是理想的計算。 – 2012-02-03 04:54:47
- 1. Android應用程序掛起。爲什麼?
- 2. 這個程序爲什麼會掛起?
- 3. gdb爲什麼會掛起?
- 4. 爲什麼我的多線程應用程序掛起?
- 5. 爲什麼我的程序掛起
- 6. 爲什麼這個程序掛起?
- 7. 提示工作,爲什麼我的應用程序有時會「掛起」負載
- 8. 這個Java應用程序爲什麼掛起/凍結?
- 9. 應用程序正在滯後/掛起。爲什麼?
- 10. log4net是否會掛起應用程序?
- 11. 爲什麼我的應用程序在更新數據庫記錄時掛起?
- 12. 爲什麼setContentView的位置更改會改變應用程序的行爲?
- 13. 爲什麼當有很多請求時應用程序會自行掛起?
- 14. 爲什麼執行應用程序時批處理文件有時會掛起?
- 15. 爲什麼以下程序可能會掛起?
- 16. 爲什麼Thread.Join()在UI線程上調用時掛起我的應用程序?
- 17. 這爲什麼會導致GHCI掛起?
- 18. 爲什麼Groovy會執行()掛起?
- 19. 爲什麼VS2010調試器會掛起?
- 20. 爲什麼crawler4j會隨機掛起?
- 21. GC.AddMemoryPressure爲什麼會死鎖/掛起?
- 22. NSPrintOperation掛起應用程序
- 23. WinForms應用程序掛起
- 24. Control.Invoke()掛起應用程序
- 25. AUGraphStop掛起應用程序
- 26. DialogFragment.show掛起應用程序
- 27. 爲什麼iPhone應用程序更新會中斷我的應用程序?
- 28. 爲什麼Java進程掛起?
- 29. Uwp應用程序更改爲藍頁。爲什麼?
- 30. 爲什麼應用程序在使用子字符串方法時掛起?
這並不特別讓我感到驚訝,這會造成幾秒鐘的延遲。無論何時設置屬性,該框架可能都會重新創建本機ListView控件,這需要一段時間。值得注意的是,5000+項目在ListView中有很多... – 2012-02-03 04:20:48
是否有任何解決方法? – SolidSnake 2012-02-03 04:23:28