1

dataGridView 列でマスクされたテキスト ボックスをホストしようとしています。ユーザーは有効な日付値を dd/mm/year の形式で入力する必要があり、ここの例に従っていましたhttp://www.codeproject.com/Articles/26005/DataGridViewColumn-Hosting-MaskedTextBox

ただし、以下のコードに問題があります。行が事前に入力されており、ユーザーは日付列のみを更新することになっています。これは、データベースではデフォルトで 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;
                }
        }
    }

ここに画像の説明を入力

4

1 に答える 1