c# - 当我更改表单数据网格的排序顺序时,在 form.ShowDialog() 上发生参数异常

标签 c# winforms debugging exception

好吧,我对这种情况感到非常困惑,所以请耐心等待。

在我的应用程序中,如果您单击一个按钮,我会打开一个编辑器表单

dgEditor = new fmDataGridFieldEditor();
dgEditor.ShowDialog();

这工作正常,我的表单显示并正确运行。该表单中有一个数据网格,其中包含一些指定的字段。现在,如果我随后更改数据网格的其中一列(仅用于数字的列)中的数据,然后通过单击列标题更改排序顺序,我的表单将崩溃。出现 ArgumentException 错误,在 dgEditor.ShowDialog(); 行上显示“Object must be of type Int32”。

我不明白发生了什么,甚至不知道如何开始调试它。当我修改现有行时,或者如果我输入的行已经排序(例如 0,1,2 很好,但 0,1,0 会导致崩溃)时,不会发生这种情况。

此外,我有 visual studio 2010 设置来中断所有异常,而不仅仅是未处理的异常,但我在同一个地方遇到异常。

最后,我绑定(bind)了数据网格的 ColumnSortModeChanged 事件以显示消息框,但即使排序没有使表单崩溃,消息框也不会显示。

我对如何继续这件事感到茫然。

最佳答案

调试器显示您编写的最后一行代码。这是 ShowDialog() 调用。如果查看 Debug + Windows + Call stack,就会看到 .NET 框架中涉及的方法。如有必要,向上滚动窗口以查看所有内容。 DataGridView 有很多内置功能,虽然您可以从 Reference Source 获得源代码,但它并不容易获得。并不是说这会有很大帮助,而是有很多帮助。

很明显,一行或多行中存在一些无效数据。看起来像一个领先的空间,只是猜测这里没有坐在你的机器前。实现 CellValidating 事件,以便用户无法输入格式不正确的数字。

关于c# - 当我更改表单数据网格的排序顺序时,在 form.ShowDialog() 上发生参数异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5108779/

相关文章:

c# - 控制台应用程序中 WCF 托管服务中的 MaxReceivedMessageSize

c# - 将 Massive 与 SQLite 一起使用时出现 "Database is locked"异常

.net - 如何连续循环DataGridView行?

c# - 在 C# 中,如何调用返回列表的函数?

c# - .NET Framework 4 中数据库的缓存数据列表

c# - 从 c# 调试 c++ cli - 未命中 c++ 断点

c# - 如何在当前 Visual Studio 主机内的 Visual Studio 扩展中调试使用 Roslyn 编译的代码?

javascript - 为什么 Visual Studio 2005 不调试我的 JavaScript 代码?

javascript - 在 C# 中创建一个 JavaScript 函数

c# - 使用 C# Windows 窗体进行本地化,无法访问我的 .resx 文件