所以我尝试新的东西...... 我在代码的顶部添加了一个全局ListViewItem,这样每当我看到它适合时,我就可以轻松地将新的子项添加到列表中。
因此,为了尝试这种新方法,我制作了一个简单的列表视图和一个添加当前时间的按钮。 当我点击它一次它工作得很好,但如果我再次尝试点击添加它会抛出这个错误。
System.ArgumentException:'无法添加或插入项目' 11:24'在 不止一个地方。您必须先将其从当前删除 定位或克隆它。'
有没有一种方法可以在不删除或克隆它的情况下解决这个问题?
using System;
using System.Windows.Forms;
namespace Listviews
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
ListViewItem lvi = new ListViewItem();
private void btnAdd_Click(object sender, EventArgs e)
{
string time = DateTime.Now.ToString("HH:mm");
lvi.Text = time;
listView1.Items.Add(lvi);
}
}
}
答案 0 :(得分:3)
您是一次又一次地添加相同的项目(不同的文字不是意味着它是另一个项目)。 Add
ListView
方法有一个接受字符串的重载。这样就会自动创建一个新的listviewitem
。
namespace Listviews
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
// Not needed
//ListViewItem lvi = new ListViewItem();
private void btnAdd_Click(object sender, EventArgs e)
{
string time = DateTime.Now.ToString("HH:mm");
// Just add the time directly as a string
listView1.Items.Add(time);
}
}
}
或者查看您问题的第一条评论。但只要您不想修改项目或将其存储在外部,您就不需要创建listViewItem
。
答案 1 :(得分:0)
ListViewItem lvi;
private void button1_Click(object sender, EventArgs e)
{
lvi = new ListViewItem();
string time = DateTime.Now.ToString("HH:mm");
lvi.Text = time;
listView1.Items.Add(lvi);
}
你可以使用它。