我正在尝试从另一种形式添加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
}
答案 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);
}
}