【发布时间】:2021-11-22 19:38:46
【问题描述】:
我正在尝试编写任务管理器。
我的问题是,我在列表视图中添加了进程列表,但是 我找不到不重复输入的方法
这里是代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Process_Manager
{
public partial class Form1 : Form
{
List<int> processId = new List<int>();
int first_time = 0;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void do_job(List<int> test,int id)
{
for(int i = 0; i < test.Count; i++)
{
if(!listView1.Items.ContainsKey(Convert.ToString(id)))
{
ListViewItem t = new ListViewItem(Convert.ToString(id));
listView1.Items.Add(t);
}
}
}
private void listView1_MouseUp(object sender, MouseEventArgs e)
{
Process[] process = Process.GetProcesses();
foreach (Process t in process)
{
processId.Add(t.Id);
}
for(int i = 0; i < processId.Count; i++)
{
ListViewItem listviewitemprocess = new ListViewItem(Convert.ToString(processId[i]));
listView1.Items.Add(listviewitemprocess);
}
processId.Clear();
}
}
}
我尝试使用列表,将数据添加到列表中,然后清除列表以获得没有 doublon 的新列表。 但这似乎行不通!
我真的被困住了!
【问题讨论】:
-
do_job 是从哪里调用的?
-
每次点击
listView1时,当前进程ID 都会被添加到列表中已经存在的进程ID 中吗?您应该在每次调用listView1_MouseUp()时清除listView1;然后可以将processId设为局部变量,或者更好的是,将其消除并在foreach循环中填充listView1。
标签: c# .net winforms listview duplicates