我有DataGridViewColumn,它使用DateTimePicker控件来编辑单元格值。它基于MSDN上给出的示例。
我使用此方法遇到两个问题来创建自定义列: 1.即使在DateTimePicker被更改之后,单元格中的值也会恢复为当前日期。 2.在最后一行编辑DateTimePicker单元格不会触发添加新行(我假设这与前一个问题有关)。
如何将DateTimePicker中选取的值分配给文本框单元格?如有必要,我可以提供代码示例,但我的控制几乎与上面的MSDN链接相同。
答案 0 :(得分:0)
从DateTimePicker继承并实现IDataGridViewEditingControl的控件需要重写OnValueChanged(...)事件,以便检测编辑控件何时被更改。为了分配新的值,必须覆盖该方法,如下所示:
protected override void OnValueChanged(EventArgs eventargs)
{
this.EditingControlValueChanged = true;
this.EditingControlDataGridView.NotifyCurrentCellDirty(true);
base.OnValueChanged(eventargs);
}
作为旁注,在MSDN示例的CalendarEditingControl类中,似乎不需要valueChanged
变量和rowIndex
变量,因为这些值可以由EditingControlRowIndex处理和EditingControlValueChanged分别(如果我正确阅读了这个例子)。