如何将唯一项输入到列表视图中

时间:2017-08-05 21:49:26

标签: c# listview

我想在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"

1 个答案:

答案 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。原始代码重复使用相同的项目,一旦添加到父级,就无法再添加两次。