将listBox传递给新表单

时间:2013-12-11 12:24:40

标签: c# winforms constructor listbox

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

Form1中:

private void button10_Click(object sender, EventArgs e)
{
    var form2 = new Form2(listBox1);
    form2.Show();
    this.Hide();
}  

窗体2:

public Form2(ListBox listBox)
{
    InitializeComponent();
    listBox1.Items=listBox.Items;
} 

我只想将我的数据从Form1上的listBox发送到我的Form2 listBox,但它给了我这个错误:

  

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

2 个答案:

答案 0 :(得分:2)

listBox.Items是只读属性。您需要使用listBox.Items.Add() or 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);

        } 

答案 1 :(得分:2)

您可以使用Sampath的答案,这是完全正确的。但为了便于阅读和缩短代码,您可以使用ListBox.ObjectCollection.AddRange Method

public Form2(ListBox listBox)
{
    InitializeComponent();
    listBox1.Items.AddRange(listBox.Items);
}