将列表框的所有项目发送到列表视图的第一列。但是listview是另一种形式

Send All items of listbox to listview's firts column. But listview is in another form

在我的程序中,listbox3 是第一个。我需要将其所有项目发送到另一个名为 "print" 的表格。在打印表单中有一个包含四列的列表视图。我需要用这些项目填充第一列。

Form 1
private void button2_Click(object sender, EventArgs e)
{
    print f5 = new print(listBox3.Items);
    f5.Show();
}

Form 2
public partial class print : Form
{


    public print(ListBox.ObjectCollection list1)
    {
        string[] row = { list1};
        var listViewItem = new ListViewItem(row);
        this.listView1.Items.Add(listViewItem);

        InitializeComponent();
     }

您的问题出现是因为您试图将多个对象(和类型 object)的整个集合添加为字符串数组的第一个元素。

您需要遍历集合并逐项添加到数组中:

foreach (var listBoxItem in list1)
{
    string[] row = { listBoxItem.ToString() };
    var listViewItem = new ListViewItem(row);
    this.listView1.Items.Add(listViewItem);
}

编辑:

从不 在调用 InitializeComponent(); 之前尝试操作控制元素。这个方法完全按照它说的做:它初始化所有 components/control 个元素。

循环必须在这个调用后面:

public print(ListBox.ObjectCollection list1)
{    
    InitializeComponent();

    foreach (var listBoxItem in list1)
    {
        string[] row = { listBoxItem.ToString() };
        var listViewItem = new ListViewItem(row);
        this.listView1.Items.Add(listViewItem);
    }        
}

试试这个代码

foreach (var data in list1)
{
  string row= data.ToString();
  var listViewItem = new ListViewItem(row);
  this.listView1.Items.Add(listViewItem);  
}