c#从另一个表单添加listView项目

时间:2014-10-24 20:20:53

标签: c#

我正在尝试从另一种形式添加listView中的项目,但我不知道如何做到这一点。我试过这个,但它给出了一个错误。

Form1中

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Local_Host
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            _Form1 = this;
        }

        public static Form1 _Form1;

        public void AddItem(object value)
        {
            listView1.Items.Add(value);
        }
    }
}

窗体2

    private void button1_Click(object sender, EventArgs e)
    {
        Form1._Form1.AddItem(textBox1.Text); //error

    }

2 个答案:

答案 0 :(得分:1)

错误在函数

 public void AddItem(object value)
 {
     listView1.Items.Add(value);
 }

您将对象传递给此函数并尝试将其添加到ListViewItemCollection中,但ListViewItemCollection没有overload of the Add method接受对象

将其更改为

 public void AddItem(string value)
 {
     listView1.Items.Add(value);
 }

这将解决即时编译问题,但您将很难使用该静态变量。如果您的计划是将值从form2传递给form1,那么最好保留已创建的form1实例并使用它通过AddItem方法传递值,否则您将结束将该值添加到Form1的其他实例(后一个实例) created将收到新的字符串)

答案 1 :(得分:0)

而是将文本框值传递给Form1构造函数,如

窗体2

private void button1_Click(object sender, EventArgs e)
{
    Form1 frm = new Form1(textBox1.Text);
    frm.show();
}

然后在Form1中将值添加到列表视图中,如

public partial class Form1 : Form
{
    public Form1(string listview_val)
    {
        InitializeComponent();

        this.listView1.Items.Add(listview_val);
    }
}