You need to enable JavaScript to run this app. 如何基于原ListView两列条件向其他ListView添加数据且避免重复
优惠活动
大模型
产品
解决方案
定价
更多

如何基于原ListView两列条件向其他ListView添加数据且避免重复

问题修复方案

重复原因

你的代码每次点击新增按钮时,都会全量遍历tasksList中所有历史条目,再统一插入到4个目标ListView中,之前已经插入过的旧条目会被反复添加,因此会出现重复条目。


修复方案1:全量刷新(改动最小)

适合任务总数量不大的场景,每次分配条目前先清空4个目标ListView的已有内容,再重新插入所有符合条件的条目:

private void button1_Click(object sender, EventArgs e)
{
    string[] row = { taskTextbox.Text, importantComboBox.Text, urgentComboBox.Text, descriptionremarksTextBox.Text };
    var listItem = new ListViewItem(row);
    tasksList.Items.Add(listItem);
    txtClear();

    // 新增:先清空4个目标ListView的旧内容
    listView1.Items.Clear();
    listView2.Items.Clear();
    listView3.Items.Clear();
    listView4.Items.Clear();

    foreach (ListViewItem item in tasksList.Items)
    {
        if (item.SubItems[1].Text == "Yes" && item.SubItems[2].Text == "Yes")
            listView1.Items.Add(new ListViewItem(item.SubItems[0].Text));
        else if (item.SubItems[1].Text == "Yes" && item.SubItems[2].Text == "No")
            listView2.Items.Add(new ListViewItem(item.SubItems[0].Text));
        else if (item.SubItems[1].Text == "No" && item.SubItems[2].Text == "Yes")
            listView3.Items.Add(new ListViewItem(item.SubItems[0].Text));
        else if (item.SubItems[1].Text == "No" && item.SubItems[2].Text == "No")
            listView4.Items.Add(new ListViewItem(item.SubItems[0].Text));
    }
}

修复方案2:增量添加(性能更优)

不需要遍历整个任务列表,只需要把刚新增的单条条目按条件分配到对应目标ListView即可,避免重复处理旧数据:

private void button1_Click(object sender, EventArgs e)
{
    string[] row = { taskTextbox.Text, importantComboBox.Text, urgentComboBox.Text, descriptionremarksTextBox.Text };
    var listItem = new ListViewItem(row);
    tasksList.Items.Add(listItem);
    txtClear();

    // 仅处理当前新增的条目,不需要遍历全量历史
    if (listItem.SubItems[1].Text == "Yes" && listItem.SubItems[2].Text == "Yes")
        listView1.Items.Add(new ListViewItem(listItem.SubItems[0].Text));
    else if (listItem.SubItems[1].Text == "Yes" && listItem.SubItems[2].Text == "No")
        listView2.Items.Add(new ListViewItem(listItem.SubItems[0].Text));
    else if (listItem.SubItems[1].Text == "No" && listItem.SubItems[2].Text == "Yes")
        listView3.Items.Add(new ListViewItem(listItem.SubItems[0].Text));
    else if (listItem.SubItems[1].Text == "No" && listItem.SubItems[2].Text == "No")
        listView4.Items.Add(new ListViewItem(listItem.SubItems[0].Text));
}

内容的提问来源于stack exchange,提问作者Datetimewizard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 09:06:05