【问题标题】:How to input unique item into a listview如何将唯一项目输入到列表视图中
【发布时间】:2017-08-05 21:49:26
【问题描述】:

我想用 C# 构建一个小型应用程序。用户将在文本框中输入,单击按钮后,信息将显示在列表视图中。我的列表视图有 3 列标题。我想在列表视图中输入唯一的单词,如果信息已经存在,那么消息框将显示错误。一切都快完成了,但我有一个例外。不明白我错过了什么?

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\n参数 名称:项目”

【问题讨论】:

  • but I got an exception 你会发布异常细节还是让我们想象一下。
  • 这里是异常详细信息-----"不能在多个位置添加或插入项目'2'。您必须先将其从当前位置删除或克隆它。\r \n参数名称:item"
  • @YousufYamin 您需要为列表创建一个新的ListViewItem。您的代码正在重用最初创建的代码。

标签: c# listview


【解决方案1】:

使用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。原始代码重用了相同的项目,一旦添加到父项,就不能添加两次。

【讨论】:

    猜你喜欢
    • 2011-07-23
    • 1970-01-01
    • 2020-06-26
    • 2012-11-09
    • 2020-02-12
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2016-05-23
    相关资源
    最近更新 更多