C# 将每个进程的图标添加到dataGridView1后,最后一个图标为红色x为什么会发生?我检查了null,但没有任何内容是null

C# 将每个进程的图标添加到dataGridView1后,最后一个图标为红色x为什么会发生?我检查了null,但没有任何内容是null,c#,winforms,datagridview,C#,Winforms,Datagridview,在form1中,我有一个通过计时器调用的方法,在designer中,我将第一列类型更改为:DataGridViewImageColumn private void test() { foreach (Process p in Process.GetProcesses()) { if (p.MainWindowTitle.Length > 1) {

在form1中,我有一个通过计时器调用的方法,在designer中,我将第一列类型更改为:DataGridViewImageColumn

private void test()
   {

    foreach (Process p in Process.GetProcesses())
                {
                    if (p.MainWindowTitle.Length > 1)
                    {
                        var icon = Icon.ExtractAssociatedIcon(p.MainModule.FileName);
                        Image ima = icon.ToBitmap();
                        String status = p.Responding ? "Running" : "Not Responding";
                        dataGridView1.Rows.Add(ima,p.MainWindowTitle, status);
                    }
   }
                }
现在我得到的是:

在第一次迭代中,我看到了所有的图标,但最后我看到了红色的x。我试图检查变量ima是否为null,但它不是,然后检查变量p是否为null或p.MainWindowTitle是否为null,但没有任何内容为null。 这个红色x的原因可能是什么

第二件事(未连接到红色x问题):在第一次迭代中,我在第二次计时器迭代中看到了9个图标(不包括红色x),它正在添加另一个图标,因此有10个。为什么不第一次添加所有10个图标?

只需将其删除即可

var row = dataGridView1.Rows[dataGridview.Rows.Count-1];
dataGridView1.Rows.Remove(row);

关于第二个问题。第十个进程也是第一次运行吗?这是什么过程?

尝试使用datagridview属性
AllowUserToAddress=false

这样它就不会显示最后一个空行。

看起来像一个空行。首先删除它或阻止它被添加..在我看来,它只是“新行”-行,您可以在其中输入新数据。这就是为什么它没有可用的图像数据,而其他字段也是空的。实际上,您可以使用
myGrid.allowUserToAddress=false禁用DataGridView的该选项