我正在尝试在 dataGridView 列中托管一个蒙面的文本框。用户应该以 dd/mm/year 格式输入有效的日期值,我在此处遵循示例http://www.codeproject.com/Articles/26005/DataGridViewColumn-Hosting-MaskedTextBox
但是,下面的代码有问题。我预先填充了行,并且用户应该只更新 Date 列,默认情况下在数据库中为 NULL。
当我单击列将其置于编辑模式时,我收到错误消息
指定的参数超出了行的有效值范围
if (Value == null || Value is DBNull)
下面是有问题的一段代码和异常快照截图
public override void InitializeEditingControl(int rowIndex, object initialFormattedValue, DataGridViewCellStyle dataGridViewCellStyle)
{
base.InitializeEditingControl(rowIndex, initialFormattedValue, dataGridViewCellStyle);
MaskedEditEditingControl editingControl = base.DataGridView.EditingControl as MaskedEditEditingControl;
if (editingControl != null)
{
if (Value == null || Value is DBNull)
editingControl.Text = (string)DefaultNewRowValue;
else
switch (Value.GetType().FullName)
{
case "System.DateTime":
DateTime dt = (DateTime)Value;
editingControl.Text = dt.ToString("dd-MM-yyyy hh:mm");
break;
case "System.String":
editingControl.Text = (string)Value;
break;
}
}
}