C# 将列表框传递给新表单

C# 将列表框传递给新表单,c#,winforms,constructor,listbox,C#,Winforms,Constructor,Listbox,我的构造函数有问题。我把它设置成这样: 表格1: private void button10_Click(object sender, EventArgs e) { var form2 = new Form2(listBox1); form2.Show(); this.Hide(); } public Form2(ListBox listBox) { InitializeComponent(); listBox1.Items=listBox.Item

我的构造函数有问题。我把它设置成这样:

表格1:

private void button10_Click(object sender, EventArgs e)
{
    var form2 = new Form2(listBox1);
    form2.Show();
    this.Hide();
}  
public Form2(ListBox listBox)
{
    InitializeComponent();
    listBox1.Items=listBox.Items;
} 
表格2:

private void button10_Click(object sender, EventArgs e)
{
    var form2 = new Form2(listBox1);
    form2.Show();
    this.Hide();
}  
public Form2(ListBox listBox)
{
    InitializeComponent();
    listBox1.Items=listBox.Items;
} 
我只想将我的数据从Form1上的列表框发送到Form2列表框,但它给了我以下错误:

无法将属性或索引器“System.Windows.Forms.ListBox.Items”分配给--它是只读的


listBox.Items
是只读属性。您需要使用
listBox.Items.Add()或AddRange()
方法

//From form1 pass only your listbox items.
    private void button10_Click(object sender, EventArgs e)
        {

            var form2 = new Form2(listBox1.Items);
            form2.Show();
            this.Hide();
        }


//In your form2 you can use AddRange()
    public Racun(ListBox.ObjectCollection Items)
        {
            InitializeComponent();      

            listBox1.Items.AddRange(items);

        } 

listBox.Items
是只读属性。您需要使用
listBox.Items.Add()或AddRange()
方法

//From form1 pass only your listbox items.
    private void button10_Click(object sender, EventArgs e)
        {

            var form2 = new Form2(listBox1.Items);
            form2.Show();
            this.Hide();
        }


//In your form2 you can use AddRange()
    public Racun(ListBox.ObjectCollection Items)
        {
            InitializeComponent();      

            listBox1.Items.AddRange(items);

        } 

您可以使用Sampath的答案,这是完全正确的。但为了提高可读性和缩短代码,您可以使用:


您可以使用Sampath的答案,这是完全正确的。但为了提高可读性和缩短代码,您可以使用:


这个错误是不言自明的。无法设置
Items
属性,因为它是只读的-请阅读[docs]()了解如何将数据分配给列表框。另外,您应该真正重命名
var form1
,这是一个非常容易引起误解的变量名称谢谢您,但是您知道如何将第一个表单上的列表框中的项目转换为第二个表单,并在该列表框中显示它。我是c#新手。这个错误是不言自明的。无法设置
Items
属性,因为它是只读的-请阅读[docs]()了解如何将数据分配给列表框。另外,您应该真正重命名
var form1
,这是一个非常容易引起误解的变量名称谢谢您,但是您知道如何将第一个表单上的列表框中的项目转换为第二个表单,并在该列表框中显示它。我是c#的新手,所以它是这样的:listBox1.Items=listBox.Items;添加(listBox.Items);?你为什么把你的循环解决方案改成我的?!你的已经正确了。这一个不知怎么的不起作用。但你们都帮了我,所以它是这样的:listBox1.Items=listBox.Items;添加(listBox.Items);?你为什么把你的循环解决方案改成我的?!你的已经正确了。这一个不知怎么的不起作用。但你们都帮了我。没问题,很高兴我能帮上忙。没问题,很高兴我能帮上忙。