我想在C#中构建一个小应用程序。用户将在文本框中输入,单击按钮后,信息将显示在列表视图中。我的listview有3个列标题。我想在listview中输入唯一的单词,如果信息已经存在,那么消息框将显示错误。一切都差不多完成但我得到了一个例外。不明白我错过了什么?
ListViewItem item = new ListViewItem();
int serial = 1;
private void saveBtn_Click(object sender, EventArgs e)
{
string code = codeTextBox.Text;
string name = nameTextBox.Text;
foreach (ListViewItem.ListViewSubItem subItem in item.SubItems)
{
if (subItem.Text == code)
{
MessageBox.Show("Code or Department name already exist");
break;
}
else
{
item.Text = (serial.ToString());
item.SubItems.Add(code);
item.SubItems.Add(name);
listView1.Items.Add(item);
}
serial++;
}
}
以下是例外情况----
"无法添加或插入项目' 2'在不止一个地方。你必须 首先将其从当前位置删除或克隆它。\ r \ nParameter name:item"
答案 0 :(得分:2)
使用System.LINQ
执行此操作。好多了:
if (item.SubItems.Any(t => t.Text == code))
MessageBox.Show("Code or Department name already exist");
else
{
ListViewItem item = new ListViewItem();
item.Text = serial.ToString();
item.SubItems.Add(code);
item.SubItems.Add(name);
listView1.Items.Add(item);
}
您还需要为添加到列表中的每个新项目创建新的ListViewItem
。原始代码重复使用相同的项目,一旦添加到父级,就无法再添加两次。