2010-02-17 88 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