2010-09-07 39 views
2

我有一個帶有TimeSpan列的Winform應用程序,該列顯示日期的小時/分鐘部分。當用戶輸入文本時,它將使用TimeSpan.TryParse()轉換爲TimeSpan。如果用戶輸入值爲「11點」,設置11小時的值,則此功能按預期工作。問題是,如果使用進入「1100」,它被解析爲1100天,這不是我想要的,也不是簡單地在「CellValidating事件令人滿意的行爲」中說「不好的輸入」。更改DataGridViewCell用戶輸入處理行爲

用戶輸入在只讀屬性DataGridViewCellValidatingEventArgs.FormattedValue中提供,所以我無法更改通過調用鏈傳遞的值。 DataGridViewTextBoxCell.EditedFormattedValue也是隻讀的,我找不到任何其他允許覆蓋默認行爲的事件或屬性。

這很令人沮喪。我可以通過驗證器編寫一個可以處理多個用戶輸入格式並從每個輸入格式中獲得預期值的多步驟下降過程;但除非我扔掉框架提供的所有強類型數據綁定,而是創建一個將所有值存儲爲字符串的填充對象,但似乎沒有任何方法可以這樣做。

回答

2

不知何故,在DataGridView中的100億個事件中,我設法忽略了CellParsing。重寫它可以讓我做我需要做的事情。