【问题标题】:.NET DataGridView: Correct way of dealing with parsing errors while handling the CellParsing event?.NET DataGridView:在处理 CellParsing 事件时处理解析错误的正确方法?
【发布时间】:2010-02-17 13:51:01
【问题描述】:

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

据我了解,调用解析器的正确时间点是在处理 CellParsing 事件期间。 但是当解析失败时如何正确处理呢?

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

【问题讨论】:

    标签: .net exception parsing datagridview error-handling


    【解决方案1】:

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

    我在这一切方面的经历是动荡的,但非常值得,因为现在我有了一个用户界面,可以将许多不同类型的数据输入到一个单元格中。

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

    【讨论】:

    • 我希望你一切顺利。如果您遇到任何问题,请随时发表评论,我会尽力帮助您。祝你好运!
    猜你喜欢
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 2020-11-15
    • 2012-10-06
    • 2019-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多