我需要主持 DateTimePicker
控制在 DataGridView
细胞。通过从 DataGridViewColumn
派生一个类,我已经让它正常工作了。 ,另一个来自 DataGridViewCell
, 第三个来自 DateTimePicker
并实现 IDataGridViewEditingControl
.除了一个小细节外,一切都按照我的意愿进行。
如果用户选择在列中显示秒,则它们始终会显示,但如果单元格被编辑,则用户在单元格中输入的任何秒数都会被截断。当我尝试追踪错误时,我意识到我实际上并不确定DataGridViewCell
是如何发生的。从编辑控件中获取其值。我敢肯定,如果我能弄清楚这是在哪里发生的,那么我就能弄清楚我的错误是什么。所以我的问题是。编辑控件的值怎么回到DataGridViewCell
?
最佳答案
我解决了自己的问题,但会在这里发布我的解决方案,以防将来有人遇到同样令人沮丧的问题。因此,如果您创建了一个自定义 DataGridView 列/单元格/编辑控件,并且在编辑后您的值不正确,那么这里有一个解决方法。覆盖 DataGridViewCell.SetValue(int rowIndex, object value)
方法。我承认,我从来没有找到单元格的值来自哪里,但我确实发现它是通过这里传递的。从这里我仍然可以访问编辑控件,从那里我可以获得正确的值,而不是我得到的奇怪值。从那里您可以获取您真正需要的值并将其传递给base.SetValue(rowIndex, newVal);
。你的值(value)将被正确设置。
老实说,我不明白为什么微软没有 IDataGridViewEditingControl.GetValue()
在界面中定义,但他们没有,所以这是解决方法。
关于.net - DataGridView 何时从自定义 EditingControl 获取其值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25334006/