C# 如何将列表框项从一个表单传递到另一个表单

C# 如何将列表框项从一个表单传递到另一个表单,c#,forms,C#,Forms,我想知道如何将列表框项目从Form1传递到Form2中的列表框 假设我有两个列表框,一个在form1中,另一个在form2中,还有一个名为button1的按钮调用form2 private void button1_Click(object sender, EventArgs e) { Form2 f = new Form2(x); f.Show(); } 其中x是传递给form2的xmpp连接 form2构造函数类 private Xm

我想知道如何将列表框项目从Form1传递到Form2中的列表框

假设我有两个列表框,一个在form1中,另一个在form2中,还有一个名为button1的按钮调用form2

private void button1_Click(object sender, EventArgs e)
     {
         Form2 f = new Form2(x);
         f.Show();
     }
其中x是传递给form2的xmpp连接

form2构造函数类

private XmppClientConnection brian;
    public Form2(XmppClientConnection x)
    {
        InitializeComponent();
        brian = x;


    }
通过使用上述代码,我可以成功通过x


现在,在这个实例中,我希望form1的x和listbox项都在form2的listbox中传递。

只需在form2类构造函数中添加一个参数即可

public partial class Form2 : Form
    { 
        //here I  suppose that you have added another listbox on your form2 
        public Form2(ListBox.ObjectCollection items )
        {
            InitializeComponent();

            listBox1.Items.AddRange(items)          ;}

    }
表格1

 private void button1_Click(object sender, EventArgs e)
     {
         Form2 f = new Form2(listbox1.Items);
         f.Show();
     }

您可以使用mediator类,该类可以设置form1中的数据,您将在第二个表单中获得它,例如ref

form1.cs

private void button1_Click(object sender, EventArgs e)
 {
     Form2 f = new Form2(listbox1.Items);
     f.Show();
 }
Form2.cs

private void button1_Click(object sender, EventArgs e)
 {
     Form2 f = new Form2(listbox1.Items);
     f.Show();
 }
Form2
的参数化构造函数中传递
ListBox.ObjectCollection
,并将其作为数据源分配给Form2上的ListBox

public partial class Form2 : Form
{    

    public Form2()
    {
        InitializeComponent();
    }

    public Form2(ListBox.ObjectCollection objectCollection)
    {
        InitializeComponent();           

        this.listBox1.DataSource =  objectCollection;
    }
}
注意:您可以使用参数化构造函数。参数的数量可能会增加

例如:

Form2 f = new Form2(sConnectionString, listbox1.Items);
f.Show();
现在在
Form2
中,必须有一个构造函数,它有两个参数,分别是
string
&
ListBox.ObjectCollection

例如:

 public Form2(string sConnectionString, ListBox.ObjectCollection objectCollection)
    {
        InitializeComponent();           

        this.listBox1.DataSource =  objectCollection;

        //use sConnectionString here
    }

在第二种形式中,创建如下构造函数:

private XmppClientConnection brian;
public Form2(XmppClientConnect x, ListBox.ObjectCollection objectCollection){
   InitializeComponent();
   this.brian = x;
   this.listBox1.Items.AddRange(objectCollection)
}
private void button1_Click(object sender, EventArgs e)
 {
     Form2 f = new Form2(x, ListBox1.items);
     f.Show();
 }
在点击按钮事件中,您可以按照K.B的建议执行以下操作:

private XmppClientConnection brian;
public Form2(XmppClientConnect x, ListBox.ObjectCollection objectCollection){
   InitializeComponent();
   this.brian = x;
   this.listBox1.Items.AddRange(objectCollection)
}
private void button1_Click(object sender, EventArgs e)
 {
     Form2 f = new Form2(x, ListBox1.items);
     f.Show();
 }

XMPP连接是您的连接类。我不知道它现在是如何调用的。

如何在其他列表框中获取数据?我已经在传递一个名为x的xmpp连接数据。//private void button3_Click(object sender,EventArgs e){Form2 f=new Form2(x);f.Show();}如何同时发送x和列表框?然后向构造函数添加另一个参数。我将编辑Form2.cs属性或索引器System.Windows.Forms.ListBox.Items中的answerError 1无法分配到--它是Form1.cs的System.Windows.Forms.ListBox中的只读错误。它不包含“Items”的定义,并且找不到接受类型为“System.Windows.Forms.ListBox”的第一个参数的扩展方法“Items”请显示表单2中的构造函数?然后我可以给你正确的构造函数;public Form2(XmppClientConnection x){InitializeComponent();brian=x;}我已经用您的XmppClientConnection编辑了我的答案。