2012-01-31 121 views
-1

所有在Web中傳遞表單的教程都來自form1,然後打開form2,然後傳遞值。從另一個表單傳遞值Winforms

我想要一些相反的東西。 form1和form 2是開放的,所以如果你在form2中單擊確定,你在form 2中得到的值將以形式1傳遞。

ex。 form1單擊buttton openform2button(表單2顯示)在文本框(form2中)上寫入7(數字7)單擊按鈕okbutton然後form2在form2關閉form1後的文本框關閉後將數據存儲在form2中。所以你將放入文本框form2中的7將被保存並以文本框form1的形式傳輸。那可能嗎?

+0

http://www.codeproject.com/Articles/17371/Passing-Data-between-Windows-Forms檢查這個 – 2012-01-31 01:29:29

+1

請儘量忘記你的代碼,清理你的想法,再次閱讀你的問題。是否容易遵循? – 2012-01-31 01:31:44

+1

TextBox如何將文本傳遞給表單中的代碼?同樣的答案。 – 2012-01-31 02:27:30

回答

1

有多種方式,你可以做到這一點:

  • 分享Form 1和Form之間的模型對象。
  • 有form2暴露form1訂閱的事件。傳遞事件參數中的值。
  • 將form2作爲form1在form2關閉後讀取的公共屬性公開。
+0

很好的答案。關於共享通用模型的選項是最通用的。它可以以多種方式實施。如果我們將模型減少到一個值,並將此模型保留在我們到達方案三的某種形式的公共財產中。選項二也會起作用,但是訂閱/取消訂閱的後勤可能變成不必要的開銷。 – 2012-01-31 01:46:28

+0

有沒有簡單的方法來做到這一點? – 2012-01-31 02:23:04

+0

公開財產可能是最乾淨的方式。如果你真的想要,我相信你可以有一個靜態屬性的類可以由表單設置,但該代碼不可重複使用。 – 2012-01-31 02:55:10

0

您只需在Form2上有一個公共屬性,當Form1需要查看該值時就可以訪問該公共屬性。事情是這樣的:

using(Form2 form2 = new Form2()) 
{ 
    if(form2.ShowDialog() == DialogResult.OK) 
    { 
    form1Logger(form2.NumberWritten); 
    } 
} 

該屬性可以是這樣簡單的東西:

class Form2 
{ 
    public String NumberWritten 
    { 
     get{return textBox.Value;} 
    } 
} 
+0

先生,這是如何工作的? – 2012-01-31 02:36:06

+0

我更新了我的代碼,以便它現在可以工作。 – 2012-01-31 03:36:17

相關問題