DataGridView何时从自定义EditingControl获取其值?

时间:2014-08-15 20:48:36

标签: .net winforms datagridview custom-controls

我需要在DateTimePicker单元格中托管DataGridView控件。通过从DataGridViewColumn派生一个类,从DataGridViewCell派生另一个类,从DateTimePicker派生出来并实现IDataGridViewEditingControl,我得到了这个。除了一个小细节之外,一切都正如我所喜欢的那样。

如果用户选择在列中显示秒数,则始终显示它们,但如果编辑单元格,则会截断用户在单元格中输入的任何秒数。当我进入尝试追踪错误时,我意识到我实际上并不完全确定DataGridViewCell如何从编辑控件中获取其值。我敢肯定,如果我能弄明白这发生了什么,那么我就能搞清楚我的错误是什么。所以我的问题是。编辑控件的值如何回到DataGridViewCell

1 个答案:

答案 0 :(得分:0)

我解决了自己的问题,但是我会在这里发布我的解决方案,以防万一将来有一个非常令人沮丧的问题。因此,如果您已经创建了自定义DataGridView列/单元格/编辑控件,并且在编辑后您的值不正确,那么这是一个解决方法。覆盖DataGridViewCell.SetValue(int rowIndex, object value)方法。我承认,我从未发现细胞价值来自哪里,但我确实发现它在这里传递。从这里我仍然可以访问编辑控件,从那里我可以获得正确的值而不是我得到的奇怪值。从那里,您可以获取您真正需要的价值并通过base.SetValue(rowIndex, newVal);传递,您的价值将被正确设置。

老实说,我不明白为什么微软没有在界面中定义IDataGridViewEditingControl.GetValue(),但他们没有,所以这就是解决方法。