2013-05-29 106 views
1

我有一个DataGridView多行代表一个进程。当其中一个进程退出时,通过将我的PID列从整数进程ID更改为字符串--来更新此行以反映此问题。如果所有进程都在运行,并且该列中的每个单元都是一个数字,我可以对PID列进行排序。如果任何这些进程已结束,甚至一个单元格包含--,那么当我尝试对该列进行排序时,应用程序将失败。它突出显示Program.cs中的Application.Run(new MyForm());行,其中ArgumentException表示“对象必须是Int32类型”。 PID列是一个未绑定的DataGridViewTextBoxColumn,它的SortMode是Automatic。我如何进行排序,以便它不会崩溃,并且具有PID值为--的所有行都被分组在一起?我不在乎他们是否在排序列表的开头或结尾。排序时DataGridView崩溃?

+0

您可以发布您的'Process'对象的代码以及将数据绑定到列表的代码? – mclark1129

+0

它不是我的Process对象,它是'System.Diagnostics.Process',并且如前所述列是Unbound。 –

回答

1

我从来没有做过,但我认为你可以使用某种格式化器。 所以你能够存储像-1一个值的退出过程,这个值会自动格式化成任何你想要像--

也许这可以帮助你:DataGridView.CellFormatting

我只是做了quickread但我认为那就是我的意思。

+0

我现在非常困惑和恼火。我将它从'--'改为'-1',它仍然给我一个例外,这次用这个消息:“对象必须是String类型。” FFS ... –

+0

@CoreyOgburn我也= =也许现在它是一个不同的列?如果所有'PID'现在都来自'int'类型,那么它应该可以工作 – Viper

+0

好吧,从来没有想过,我发现当我创建行时,我给该列添加了一个int,但是当我更新行时,我给了该列一个字符串。现在它排序正确,因为一切都是int。 –

0

您必须在每一列中填写相同类型的数据。 当你的数据表的列有一些字符串和一些空它会。 等等; 如果您的数据为空您必须使用“”。 希望解释一下。对不起我的英语不好。