2010-10-11 38 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,并根据需要显示/隐藏它。