2009-07-03 86 views
0

我有一個datagridview和一個隨機填充數據的組合框。但是,新數據不會自動顯示。有人提到了使控件無效以迫使應用程序重新繪製它的想法,從而遍歷內容並用新數據填充控件。C#Win Forms自動更新控件

有誰知道哪個是在Windows窗體應用程序中實現自動更新控件的最佳方法?

非常感謝,

關於。

回答

0

如果您使用BindingSource,BindingSource.ResetBindings方法可能會對您有所幫助。

0

我想你使用數據綁定? 您對自定義對象使用數據綁定?

在這種情況下,您的類必須實現INotifyPropertyChanged接口。

0

通常設置datagridview的datasource屬性足以導致datagridview使自身失效並重繪。在某些情況下,我記得我可能必須先設置datagridview.datasource = null,然後再次設置數據源以導致更新。

0

有時,使控件無效並不總是有效。因爲WM_PAINT(底層窗口消息)是消息隊列中最低優先級消息之一。因此,Windows常常會忽略繪畫請求。 (這是另一個原因,我們在停止響應的應用程序看到「白窗口」只邊境 爲了規避這一點,叫 Application.DoEvents(); 這將迫使隊列處理所有事件,包括您的要求重繪它

0

如果您正在討論的是在應用程序外部使用來自數據庫的數據填充的控件,那麼除非您重新查詢數據庫,否則控件無法知道數據已更改

另一方面,如果您有一個應用程序正在執行數據更改本身,那麼您可以實現INotifyPropertyChanged接口,這意味着您可以有一個PropertyChanged事件tha你的控制反應,以便在事情發生變化時進行更新。以下頁面有實現這個的一個例子:http://www.codeproject.com/KB/cs/BindBetterINotifyProperty.aspx

+0

在DataGridView和ComboBox被填充了從XML文檔數據。是否仍然可以實現INotifyPropertyChanged接口以允許自動更新? – Goober 2009-07-06 11:03:03