.NET DataGridView:处理CellParsing事件时处理解析错误的正确方法?

时间:2010-02-17 13:51:02

标签: .net exception parsing datagridview error-handling

我目前正在开发角度测量设备(测角仪)的应用程序。 DataGridView组件用于配置测量角度的标称值(和公差)。用户应能够以各种方式输入角度,例如2°(对于度)或120'(对于弧的分钟)或7200“(对于arcseconds)。为此我创建了一个将转换有效字符串的解析器如果字符串无效,则为角度值(双精度,以度为单位)或失败。

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

根据MSDN示例代码,我认为应该将ParsingApplied的{​​{1}}属性(传递给DataGridViewCellParsingEventArgs处理程序)设置为CellParsing 。如果我这样做(并保持false属性不变),转换尝试会抛出Value,然后由引发FormatException事件的框架完成。 我希望有一个异常,其中包含导致我的解析器实现失败的特定错误的信息,而不是包含非特定错误消息的DataError,以便我可以在{{1}中显示特定的错误消息事件。我假设我可以从FormatException处理程序中抛出一个DataError,但是这个异常没有被框架捕获,因此不会导致引发FormatException事件(实际上是最外层的)异常处理程序终止应用程序)。

1 个答案:

答案 0 :(得分:0)

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

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

我可以在MSDN here上发布的问题中看到我提出的一些代码。
您可以根据自己的格式进行调整(希望您能看到它正在做什么)。