访问form2列表元素到mainform

时间:2013-09-13 08:35:07

标签: c# winforms

我有两种形式..(Form1和Form 2),表单1调用form2执行某些操作,表单2包含在操作或运行时添加了一些元素的列表,一旦表单2的操作完成,我想将form2列表项复制到form1中列出...

我使用 ShowDialog()来显示form2,因为它是强制性的。

请告诉我定义列表的方法,以便我可以从form1访问它们,这些元素在form2中添加。

我没有任何代码可以粘贴...抱歉...

2 个答案:

答案 0 :(得分:0)

您可以在Form2中声明一个公共列表,并在完成/关闭form2后将相关项目添加到此列表中。

然后可以从Form1访问它,Form1具有对Form2对象的引用。

所以在Form2中你可以有像

这样的东西
public partial class Form2 : Form
{
    public List<string> f2List = new List<string>();

    private void button1_Click(object sender, EventArgs e)
    {
        f2List.Add(f2List.Count.ToString());
    }

然后从Form1你可以尝试

public partial class Form1 : Form
{
    private void button1_Click(object sender, EventArgs e)
    {
        Form2 f2 = new Form2();
        f2.ShowDialog();
        List<string> f1List = f2.f2List;
    }

修改

请参阅操作,将项目添加到Form2中的List,以便它们在Form1中可用

答案 1 :(得分:0)

这样做:

public partial class Form2 : Form
{
    public List<string> f2List = new List<string>();

    private void button1_Click(object sender, EventArgs e)
    {
        f2List.Add(f2List.Count.ToString());
    }
}

然后从Form1你可以尝试

    public partial class Form1 : Form
    {
list<String> copy_of_form2_list;

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 f2 = new Form2();
            f2.ShowDialog();

// for copy the object , we serialize and deserialize an object
                try
                {
                    BinaryFormatter formatter = new BinaryFormatter();
                    FileStream output = new FileStream("temp", FileMode.OpenOrCreate, FileAccess.Write);
                    formatter.Serialize(output,f2.f2List);
                    output.Close();
                }
                catch
                {

                }


                try
                {
                    BinaryFormatter reader = new BinaryFormatter();
                    FileStream input = new FileStream("temp", FileMode.Open, FileAccess.Read);
                    fcopy_of_form2_list=((List <String>)reader.Deserialize(input));
                    input.Close();

                    if (File.Exists(@"temp"))
                    {
                        File.Delete(@"temp");
                    }

                }
                catch
                {
                }

            List<string> f1List = copy_of_form2_list;
        }