По указанной ссылке https://docs.microsoft.com/en-us/dotnet/framework/winforms/controls/how-to-host-controls-in-windows-forms-datagridview-cells?redirectedfrom=MSDN
В следующем примере кода показано, как создать столбец календаря. В ячейках этого столбца отображаются даты в обычных ячейках текстового поля, но когда пользователь редактирует ячейку, появляется элемент управления DateTimePicker.

Нашел этот пример (я не знаю, какая публикация ссылки на другой сайт здесь в порядке или нет, поэтому я копирую ее, или вы можете искать ' Добавить DateTimePicker в Datagridview в C#'):
DateTimePicker dtp = new DateTimePicker();
Rectangle _Rectangle;
public Form1()
{
InitializeComponent();
dataGridView1.Controls.Add(dtp);
dtp.Visible = false;
dtp.Format = DateTimePickerFormat.Custom;
dtp.TextChanged += new EventHandler(dtp_TextChange);
}
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
switch (dataGridView1.Columns[e.ColumnIndex].Name)
{
case "Column2":
_Rectangle = dataGridView1.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true); //
dtp.Size = new Size(_Rectangle.Width, _Rectangle.Height); //
dtp.Location = new Point(_Rectangle.X, _Rectangle.Y); //
dtp.Visible = true;
break;
}
}
private void dtp_TextChange(object sender, EventArgs e)
{
dataGridView1.CurrentCell.Value = dtp.Text.ToString();
}
private void dataGridView1_ColumnWidthChanged(object sender, DataGridViewColumnEventArgs e)
{
dtp.Visible = false;
}
private void dataGridView1_Scroll(object sender, ScrollEventArgs e)
{
dtp.Visible = false;
}