2010-10-11 96 views
0

嘿,我很難在表單之間有效地傳輸數據。使用文本框和列表框在表單之間傳輸數據

所以我有我的參賽表格。它有一個按鈕:

private void addBtn_Click(object sender, EventArgs e) 
    { 
     string data = string.Format("{0} \t {1} \t {2} \t {3} \t {4} \t {5}", 
      fnameTxtBox.Text, 
      lnameTxtBox.Text, 
      cellNumTxtBox.Text, 
      landLineTxtBox.Text, 
      dobPicker.Text, 
      commentsTxtBox.Text); 

     Black_Book_2010 myBlack_Book_2010 = new Black_Book_2010(); 
     myBlack_Book_2010.info = data; 
     myBlack_Book_2010.ShowDialog(); 
    } 
從頂部

那麼,這樣做是從每一個txtbox獲取表單上的數據,把它全部合併爲一個字符串,然後存儲所有信息到「數據」變量。

然後我點擊按鈕,它將我帶到我的第二個表格。我說,將「data」變量保存到Black_Book_2010表單中的「info」變量中。

繼承人的Black_Book_2010形式:

在頂部我declear可變我不會將數據最終存儲到

string moreData = ""; 

然後這裏是「信息」變量,現在有這些數據:

public string info 
    { 
     set 
     { 
      moreData = value; 
     } 
    } 

加載窗體時,我不會就獲得「MOREDATA」變量並將其添加到列表框中:

private void Black_Book_2010_Load(object sender, EventArgs e) 
    { 
     data.Items.Add(moreData.ToString()); 
    } 

我還在Black_Book_2010窗體上添加了一個名爲Add的按鈕,如果我想要添加更多數據,它將帶我回到我的數據輸入窗體。

但是,當我填寫表單並單擊添加,我的摘要表單再次啓動,它不會加載以前的數據,它只是打開一個新的彙總表單。

我需要的是,當我每次點擊添加數據輸入表單時,它都會將該數據添加到現有摘要表單中,而不是創建一個全新的表單。

回答

1

您每次單擊添加按鈕時都會創建一個Black_Book窗體的新實例。
所以舊的數據不見了。
嘗試使用表單的同一個實例。

另一種解決方案是維護黑名單表單之外的項目列表,並使表單使用此列表。

+0

如何使用摘要表單的同一個實例? – 2010-10-11 08:19:49

1

第一種形式完全控制第二種形式。

使第二種形式的公共添加按鈕,並附加單擊事件處理程序,並讓它在第一種形式處理。

在該事件處理程序中,Hide()第二個對話框收集數據並在準備就緒時再次顯示。

確保您只創建一次Black_box,並根據需要顯示/隱藏它。