2009-10-16 67 views
-1

我有一個回調,因爲我的Form1中打開窗體2,這回信息,以另一種形式後,將數據發送到一個窗體2 ... prioblem請幫C#回調問題

我可以從Form1的發送對象到窗體2,但form2方法的結果必須通過回調返回到另一個表單(例如表單3)。

我希望你明白我的問題..

+0

它很難告訴你想要什麼。你能發佈一些代碼並發現問題嗎? – 2009-10-16 15:09:46

+2

多一點信息會很好...你有問題嗎,或者你只需​​要知道如何做到這一點? – Bobby 2009-10-16 15:10:07

+0

你可以發佈代碼示例嗎?你是否將數據從Form2發送回Form1,反之亦然,或者兩者兼而有之,或者是完全向另一種形式發送數據? – Donut 2009-10-16 15:10:07

回答

1

事實上,您有多個表單操作相同的數據意味着更好的選擇是將數據封裝在一組「模型」類中,這些類可以處理將信息發佈到表單並持久化存儲的任何更改有必要的。

這樣做的好處是當您有多個需要處理相同數據的表單時,您可以在模型對象上發佈回調以進行更改通知。每個表單都訂閱它關心的模型中的事件,這意味着任意數量的表單都可以操縱您的模型,並且所有表單都可以通過響應通知來維護當前狀態。

什麼時候這樣做,你不關心哪些表單正在操作數據,並且在啓動新表單時不需要傳遞比模型類更多的東西。同樣,當表單請求保存時,所有表單都可以更新狀態,以便它們不顯示待處理的更改。

0

當通過多種形式之間的數據,其經常有用到存儲refernceto其他形式表單中私有變量,只有通過形式的構造函數填充。

但是,請注意,這可能會導致內存問題,尤其是事件仍然與其他表單上的表單連接。

+0

如果表單方法在不同的線程中運行,您可能還會遇到鎖定和同步問題。 – 2009-10-16 16:05:38

0

您可能可以讓Form3偵聽來自Form2的FormClosed事件,然後有一些代碼要求從Form2返回數據。或者,您可以在Form2中創建和事件FormClosedWithReturnValue(對象發件人,SomeArgsThatContainsReturnData數據),並讓Form3監聽該事件。希望有所幫助。