2016-11-21 69 views
0

所以我一直在想。正確的方式來傳遞信息

當您創建一個窗體並使用applicaton.run(form1)。然後在form1中打開另一個form2並隱藏form1。在form2中,您打開另一個form3並隱藏表單2.但是,在form3中,您想使用form1中提供的信息(變量),該信息不可訪問?如我錯了請糾正我。

我想過幾種方法,但我不認爲他們是正確的方法。

  1. 將form1中的信息保存在靜態類中。

  2. 創建各種形式的對象主類和1

  3. 關閉/運行它們傳遞1從Form1信息(變量)窗口2到form3。

這樣做的正確方法是什麼?

對不起,如果它很難遵循。

回答

0

這取決於。如果這些對話框是以模態顯示的對話框形式,並且只有一個或兩個變量,那麼通常可以將值作爲屬性存儲在該表單的類中,並且只需使用與標準MessageBox表單上的DialogResult相同的方式對其進行檢查即可。

如果它更復雜或者表單保持打開狀態,那麼您希望創建一個對象並將其傳遞給表單。記住對象是通過引用傳遞的,所以如果你創建一個名爲MyDataContainer的類,然後在主窗體中創建一個實例,那麼將該實例傳遞給其他窗體,這些窗體中的每個窗體都是相同的實例。所以如果form3更新那個實例,其他表單也會看到這些更改。

ps:避免靜態路由,很少有一個有效的用例。

+0

是的,理解。我總是猶豫,我應該選擇哪種方式。這使事情變得更容易一些。 –

0

確實沒有「正確」的方法來做到這一點。你提到的所有方法都可以工作。另外一種方法是維護一張所有表格的靜態列表。這樣,任何表單都可以通過搜索列表來找到任何其他表單。更具體地說,Dictionary<string,Form>其中string是表單的唯一標識符,可能會證明是有用的。

這就是說,這一切都歸結於您的設計目標。通常情況下,最好使用最簡單的解決方案來完成您的設計目標。

+0

謝謝你,我的腦海裏變得很輕鬆!我將使用完成我的設計目標的最簡單的解決方案。 –

+0

@tuyen。很高興有幫助。一個upvote將不勝感激。 –

+0

很想去,但我沒有足夠的代表公開展示。它確實記錄了它的記錄。 –