2009-05-27 68 views
3

當處理用戶必須經過的表單集合時,創建該表單的新實例時傳遞數據還是更好,還是從前一個表單調用函數更好?我寫了一些編寫代碼來調用前面的例程,它看起來很醜,我不能完全想到這樣做的原因。我能想出的唯一原因是數據量很大,並且很有可能用戶不會在特殊情況下使用數據。如何將變量從表單傳遞到表單?

回答

5

如果你把你的所有共享數據的類,然後傳遞給類給每個窗體上構造的一個實例的引用,那麼它並不重要的數據有多大,因爲它僅僅是一種參考每次都通過。

這樣做的好處是您的表單不會彼此綁在一起。

+0

這是最好的答案。如果你想在表單,邏輯和數據之間進行更多的分離,請檢查MVC模式。 – 2009-05-27 12:41:08

0

這是大部分的主觀問題。我個人採取了一條似乎更容易維護的路線,以供將來不得不處理我的代碼的人使用。我將實例化窗體,使用我試圖傳遞的任何內容加載公共屬性,然後使窗體可見。這樣,編輯「新」表單的任何人都知道所有數據都已預先加載。任何編輯「舊」表單的人都知道在哪裏加載任何新的屬性。

0

如果新表單將立即需要數據,那麼最好在此表單的構造函數中傳遞它。

0

可能您存儲所有的數據的全局數據變量。每個表單可以獨立訪問它。如果您有多線程實現,則可以簡單地在全局數據變量的訪問器上添加線程安全性。

0

我通常使用的兩個主要選項是將信息存儲在數據庫中,例如SQLServer或MS-Access,如果有許多表單將使用的信息,或者信息只用於下一個表格我會將這些信息傳遞給該表格,然後根據需要進行存儲。即如果它創建了一個數據表作爲數據源,將信息存儲在一個隱藏字段中,或者甚至將信息放入文本框,標籤,組合框等中,這些信息在加載時需要加入。

0

,如果你正在談論的WinForms(不是web表單),那麼你應該使用一個static class。使用靜態成員來保存上下文對象的引用(或者您計劃與其他表單共享的任何內容)。所有靜態成員保證在第一次使用之前被初始化。

一個類似的替代方法是使用單例設計模式創建一個singleton class

實際上,這兩種解決方案只是使全局訪問單個引用成爲可能,這是一種有時可能會被過度使用的功能......要小心。