2013-12-09 81 views
0

想象一下,您有FormA和FormB。 FormA有一個ListBox1,用於顯示DataSource1的值(可以是列表或數組,但底線是它使用ListBox.DataSource賦值)。 FormB將被實例化並由FormA調用。 FormA會修改(將單個行添加到列表或數組中,當時爲1行)DataSource1在FormA中提供ListBox1。你如何要求FormA及其ListBox1重新加載DataSource1並顯示由FormB修改的新值?目前FormA將包含源(列表或數組)的整個對象傳遞給FormB的構造函數中的FormB。我可以在FormB的構造函數中傳遞FormA引用,並以這種方式調用FormA的方法,但它是最有效的方法嗎?請求表單執行控制更新

+0

我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –

回答

0

事實證明,我是有錯的。事件處理就是答案。 FormA應該有一個方法將數據源重新加載到ListBox1中。應該有另一個可以委託的方法,將對象作爲發件人和EventArgs作爲e。在formB實例化中,適當的FormB的事件處理程序應該像接受任何代理一樣接收發送者和事件參數。在這種情況下,我可以使用FormClosedEventHandler。或者,該方法可以委派給DataSource1.DataSourceChangedEventHandler。就是這樣!當事件被觸發時,FormA作爲觀察者並通過委託執行自己的方法。

2

我認爲你需要的observer Patterntutorial

如果它是你第一次使用觀察員,你應該看看整個MVC Pattern