使用文本框和列表框在表单之间传输数据

时间:2010-10-11 08:08:57

标签: c# winforms listbox textbox

嘿伙计们,我在表单之间有效地传输数据时遇到了麻烦。

所以我有我的报名表。它有一个按钮:

    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”变量中。

然后我点击按钮将我带到第二个表格。我说,将“data”变量保存到Black_Book_2010表单的“info”变量中。

继承人Black_Book_2010表格:

在顶部我发现一个变量,我不会最终将数据存储到

string moreData = "";

然后这是现在有数据的“info”变量:

    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的按钮,如果我想添加更多数据,它会将我带回我的数据输入表单。

但是当我填写表单并单击添加时,我的摘要表单再次启动,它不会加载以前的数据,它只是打开一个新的摘要表单。

我需要的是每当我点击添加到我的数据输入表单时,它会将该数据添加到现有的摘要表单而不是创建一个全新的表单。

2 个答案:

答案 0 :(得分:1)

每次点击添加按钮,您都会创建一个新的Black_Book表单实例 所以旧的数据消失了 尝试使用表单的相同实例。

另一个解决方案是维护黑名单以外的项目列表,并让表单使用此列表。

答案 1 :(得分:1)

完全控制第二种形式制作第一种形式。

在第二个表单上创建“添加”按钮,并将单击事件处理程序附加到它,并以第一种形式处理。

在该事件处理程序中,Hide()第二个对话框,收集数据并在准备好后再次显示。

确保您只创建一次Black_box,并根据需要显示/隐藏它。