我有一個WinForms應用程序,它包含一個Dataset ds和一個DataGridView dgv。 dgv綁定到ds。當DataGridView可編輯時,DataGridView/Dataset的線程安全更新
ds通過Task()來更新,Task()使用TableAdapter.Fill()方法定期查詢數據庫。我在這裏遇到兩個問題。
當更新ds時,除非窗口被調整大小或其他某個事件導致窗體重繪,否則不會刷新dgv。
當用戶開始編輯dgv中的單元格時,由於多個線程訪問相同的GUI控件,ds被更新並導致UI崩潰。我試圖使用一個標誌EditModeOn,它由DataGridView dgv中的某些事件設置,雖然這沒有幫助防止線程錯誤。
什麼是具有可以由用戶進行編輯,並通過修改綁定數據集(在另一個線程更新)更新一個DataGridView的最佳方式?
什麼是DataGridView類的正確標誌或成員變量來檢查網格是否正在編輯? – DonQuixote 2011-03-14 17:32:29
對不起,點擊輸入太快 - 我的其他評論是關於我如何更新DataGridView。我的線程只是更新DataSet,它綁定到DataGridView(它不直接調用刷新或重繪方法,只是修改基礎數據集)。 – DonQuixote 2011-03-14 17:33:24
該標誌有點不相干,只要將布爾字段設置爲「true」就足夠了。如果數據網格綁定到該數據集,並且您更新了不同線程上的數據集,並且該更新觸發了需要更新的網格通知;所有這些都發生在導致交叉線程異常的'後臺線程'的上下文中。有時候人們很難跟隨。 – CodingGorilla 2011-03-14 19:00:05