【发布时间】:2016-05-16 00:08:25
【问题描述】:
这几天我一直在旋转我的轮子!
尝试按进程名称(在本例中为“记事本”)将当前正在运行的特定进程的MainWindowTitle 添加到 ListView。我已经弄清楚如何创建和添加项目,但现在我的 ListView 中有重复项。所以我要做的只是将一个项目添加到我的 ListView,如果它在我的 ListView 上不存在作为一个确切的项目。
相关信息:
-我将尝试从多个相同的进程(从 1 到 9)捕获 MainWindowTitle,但它们每个都有一个唯一的 ID。
-每个 MainWindowTitle 都会不同
这是我目前所拥有的,我无法让 LINQ 工作,我不确定是否有办法制作一个 foreach 循环来防止重复。
感谢您的帮助!
Process[] processList = Process.GetProcessesByName("notepad");
foreach (Process process in processList)
{
ListViewItem item = new ListViewItem();
item.Content = process.MainWindowTitle;
item.Tag = process;
if (listView.Items.Contains(item))
{
MessageBox.Show("Duplicate");
}
else
{
MessageBox.Show("New Item!");
listView.Items.Add(item);
}
编辑 1:仍然添加重复项
Process[] processList = Process.GetProcessesByName("notepad");
foreach (Process process in processList)
{
ListViewItem item = new ListViewItem();
item.Content = process.MainWindowTitle;
item.DataContext = process;
var itemz = listView.Items.Cast<ListViewItem>().ToList().Where(x => x.DataContext == process);
if (listView.Items.Contains(itemz))
{
MessageBox.Show("Duplicate");
}
else
{
MessageBox.Show("New Item!");
listView.Items.Add(item);
}
Edit2:更接近,我希望,仍然添加重复项
Process[] processList = Process.GetProcessesByName("notepad");
foreach (Process process in processList)
{
ListViewItem item = new ListViewItem();
item.Content = process.MainWindowTitle;
item.DataContext = process;
var itemz = listView.Items.Cast<ListViewItem>().ToList().Where(x => (x.DataContext as Process).Id == process.Id);
if (itemz == null)
{
MessageBox.Show("Duplicate");
}
else
{
MessageBox.Show("New Item!");
listView.Items.Add(item);
}
}
【问题讨论】: