自定义DataGridView列不会持久更改

时间:2011-04-06 14:38:20

标签: c# .net events forms datagridview

我有DataGridViewColumn,它使用DateTimePicker控件来编辑单元格值。它基于MSDN上给出的示例。

我使用此方法遇到两个问题来创建自定义列: 1.即使在DateTimePicker被更改之后,单元格中的值也会恢复为当前日期。 2.在最后一行编辑DateTimePicker单元格不会触发添加新行(我假设这与前一个问题有关)。

如何将DateTimePicker中选取的值分配给文本框单元格?如有必要,我可以提供代码示例,但我的控制几乎与上面的MSDN链接相同。

1 个答案:

答案 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分别(如果我正确阅读了这个例子)。

MSDN Reference