2010-02-17 41 views
2

我目前正在开发角度测量设备(测角仪)的应用程序。 A DataGridView组件用于配置测量角度的标称值(和公差)。用户应能够以各种方式输入角度,例如2°(对于度)或120'(对于弧的分钟)或7200“(对于弧秒)。为此,我创建了一个解析器,它将一个有效的字符串到角度值(双倍,度)或如果字符串无效失败.NET DataGridView:在处理CellParsing事件时处理解析错误的正确方法?

据我所知,调用解析器的正确时间点是在处理CellParsing事件期间但我该如何正确处理这种情况时,解析失败?

根据MSDN示例代码我的想法,我要离开了DataGridViewCellParsingEventArgsParsingApplied属性(它被传递到CellParsing处理)设置为false。如果我这样做(并且保留Value属性不变),那么FormatException会被转换尝试引发,然后由引发DataError事件的框架完成。 而不是FormatException其中包含一个非特定的错误消息我想有一个异常,其中包含有关导致我的解析器实现失败的特定错误的信息,以便我可以在DataError事件中显示特定的错误消息。我认为我可以从CellParsing处理程序中自己抛出FormatException,但是这个异常没有被框架捕获,因此不会引起DataError事件(实际上最外面的异常处理程序终止应用程序)。

回答

0

这个DataGridView数据错误是一个噩梦。
我最近不得不面对这个问题,最后我放弃了,并且自己实现了DataGridViewColumnDataGridViewCell。这样做可以避免所有解析错误,因为您可以在单元的ParseFormattedValue方法中专门处理它。

我所有这些的经验都是动荡的,但非常值得,因为现在我有一个用户界面,允许将许多不同类型的数据输入到单元格中。

你可以在MSDN here上发布的问题中看到我想出的一些代码。
你可以调整它以匹配你自己的格式(希望你可以看到它在做什么)。

+0

恩,谢谢!我想我应该试试那么... –

+0

我希望它适合你。如果您遇到任何问题,请不要犹豫,我会尽力为您提供帮助。祝你好运! – Codesleuth