我正在填充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
中删除所有特定项目?
答案 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--;
}
}