如何从两个表单之间传输列表?

时间:2014-12-22 15:49:31

标签: c# winforms

如何将列表从Form1传输到Form2?

我在Form2 showme = new Form2(Freezers);上收到错误。

Form1中:

private void button1_Click(object sender, EventArgs e)
    {
        List<macivari> Freezers = new List<macivari>();

        Freezers.Add(new macivari
        {
            Names="Toshiba",

            Id=1,
            about=new macivariabout
            {
                Doors="2",
                Celsius=-30
            }
            });

        Freezers.Add(new macivari
        {
            Names = "Samsung",
            Id = 2,
            about = new macivariabout 
            {
                Doors="1",
                Celsius=-60
            }
        });

        foreach (var item in Freezers)
            {
                if (listBox1.SelectedItem == "მაცივარი")
                {
                    checkedListBox1.Items.Add(item.Names);
                }
                else
                {
                    checkedListBox1.Items.Clear();
                }

            }

        Form2 showme = new Form2(Freezers);
        showme.ShowDialog ();
    }

窗体2:

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

        InitializeComponent();
        Freezers = a;
        foreach (var item2 in Freezers)
        {

        }
    }
}

1 个答案:

答案 0 :(得分:1)

您传递的类型是:

List<macivari>

构造函数期望的类型是:

List<string>

这些不是同一类型。

如果Form2需要List<macivari>,那么它应该是一个:

public List<macivari> Freezers=new List<macivari>();
public Form2(List<macivari> a)
{

    InitializeComponent();
    Freezers = a;
    foreach (var item2 in Freezers)
    {

    }
}

另一方面,如果确实需要List<string>,那么你应该提供一个macivaristring应如何表示为Names?例如,它的Form2 showme = new Form2(Freezers.Select(f => f.Names).ToList()); 属性?像这样的东西?:

{{1}}
相关问题