从C#中的组合框中删除特定项的所有实例

时间:2017-08-06 18:10:16

标签: c# winforms combobox

我正在填充ComboBox,其中包含系统上所有正在运行的进程的列表。但是,我希望能够从列表中删除所有系统进程和一般噪音。

这是我尝试使用的代码:

try
{
    var allProc = Process.GetProcesses();

    foreach (var p in allProc)
        comboBox1.Items.Add(p.ProcessName);

    comboBox1.Sorted = true;
    comboBox1.Items.Remove("svchost");
}

但是我认为它所做的只是从列表中删除svchost的单个实例,而实际上有很多。

如何从ComboBox中删除所有特定项目?

2 个答案:

答案 0 :(得分:2)

首先,我不知道为什么要将这些进程名称添加到组合框中,如果您删除它们的下一行。不添加它们更简单吗?

 var allProc = Process.GetProcesses().Where(p=>p.ProcessName != "svchost");
 foreach (var p in allProc) comboBox1.Items.Add(p.ProcessName);

其次,如果您确实要在添加项目后删除项目,请找到所有项目并将其删除:

foreach (string item in cb.Items.Cast<string>().Where(name => name == "svchost"))
{
    cb.Items.Remove(item);
}

答案 1 :(得分:1)

试试这个

for (int i = 0; i < comboBox1.Items.Count; i++)
{
    string st = comboBox1.Items[i].ToString();
    if (st == "svchost")
    {               
        comboBox1.Items.RemoveAt(i);
        i--;                    
    }
}