Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何删除列表视图中显示的特定文本/消息?_C#_.net_Listview - Fatal编程技术网

C# 如何删除列表视图中显示的特定文本/消息?

C# 如何删除列表视图中显示的特定文本/消息?,c#,.net,listview,C#,.net,Listview,嘿 我会尽量在这里更好地解释我的问题和我的处境:) 我的应用程序中有一个ListView,这个ListView用于输出错误,所以它有点用于错误日志 我的程序主要是一个计时器,它检查int值的变化 当发生错误时,我想在列表中显示它。 问题是错误会被添加3-4次,甚至更多 如果我检查一下是否存在(exist.in.listbox),我将无法再次添加相同的错误。我想做的是删除特定的消息/错误,然后在其“修复”或不再对系统构成威胁时将其删除。 下面是代码片段: if (C

我会尽量在这里更好地解释我的问题和我的处境:)

我的应用程序中有一个
ListView
,这个
ListView
用于输出错误,所以它有点用于错误日志

我的程序主要是一个计时器,它检查int值的变化

当发生错误时,我想在列表中显示它。 问题是错误会被添加3-4次,甚至更多

如果我检查一下是否存在(exist.in.listbox),我将无法再次添加相同的错误。我想做的是删除特定的消息/错误,然后在其“修复”或不再对系统构成威胁时将其删除。 下面是代码片段:

                if (Convert.ToInt32(x) == 1 && Convert.ToInt32(y) == 1)
                {

                    found = false;
                    ListViewItem item = new ListViewItem(message);
                    foreach (ListViewItem z in listView1.Items)
                    {
                        if (z.Text == message)
                        { found = true; }
                    }

                    if (found == false)
                    {
                        item.SubItems.Add(now.ToString());
                        listView1.Items.Add(item);
                        listView1.EnsureVisible(item.Index);
                    }
                }
                else
                {
                    foreach (ListViewItem z in listView1.Items)
                    {
                        if (z.Text == message)
                        {
                           //no longer a threat, delete the message added aboue
                        }
                    }
                }
我找不到关于这个的任何东西。仅“选择-->删除行时”


可以像visual中的错误窗口一样考虑这一点,当您遇到红色错误时,您可以修复代码。并且它会消除:)

您应该遵循与添加项目相同的方法。首先,检查是否要执行删除,然后删除该项

如果这执行得不好(在每次计时器迭代时在列表中迭代两次),您还可以将“添加/删除”逻辑移出ListView(即,可能保留一个字典以便更快地查找)


我想您可以用deleteMessageIfEssential(message)调用替换else子句,现在添加了代码,并调用了deleteIFN…但是我在哪里调用呢?if(Convert.ToInt32(x)==1&&Convert.ToInt32(y)==1){//do add if needs thing}else{deleteifEssential(message);}激发“删除事件”当你想删除它时。或者可能正在进行威胁检查process@user1338640没问题。别忘了标记答案:)。祝你好运
void DeleteIfNecessary(string message)
{
    ListViewItem listViewItem = FindListViewItemForMessage(message);
    if (listViewItem == null)
    {
        // item doesn't exist
        return;
    }

    this.listView1.Items.Remove(listViewItem);
}

private ListViewItem FindListViewItemForMessage(string s)
{
    foreach (ListViewItem lvi in this.listView1.Items)
    {
        if (StringComparer.OrdinalIgnoreCase.Compare(lvi.Text, s) == 0)
        {
            return lvi;
        }
    }

    return null;
}