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

标签 .net winforms datagridview custom-controls

我需要主持 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/

相关文章:

.net - 如何从 Visual Studio 中的错误列表窗口复制错误消息(仅)?

c# - 为什么编译器要求在用户界面项目中引用 Entity Framework ?

c# - 控制不立即使用 INotifyPropertyChanged 更新绑定(bind)属性

c# - 如何设置DataGridViewCell自动换行单个长字?

vb.net - 数据 GridView ...以编程方式设置选择行索引不会将 CurrentRow.Index 设置为相同?

c# - DataGridView 控件的至少一列没有单元格模板

c# - 如何使用 XmlSerializer 反序列化大型文档中的节点

.net - Azure 通知中心注册生存时间

.net - 为什么很少有 .NET 语言集成到 Visual Studio(特别是 VS2008)中?

c# - Npgsql C# throwing Operation is not valid 由于对象的当前状态突然