Pues, efectivamente eso se debe implementar con un DataGridView.
Lo primero es arrastrar y soltar el DataGridView en el Form, y luego de eso buscas la Colección que predefine el diseño del DataGridView desde el IDE, para crearlo con 5, 7 o los días con los que quieras hacer el horario.
Según un número variable de horarios, diseñas igual el DatagridView y le agregas un Row para cada franja horaria.
int _index = DataGridViwNamed1.Row.Add();
DatagridViewNamed1.Row[_index].Cells[NumeroDeColumnaDelDiaDeLaSemana_1].Value = NuevoValorDeDatoParaEsaFranjaHorarioDelDia_1;
DatagridViewNamed1.Row[_index].Cells[NumeroDeColumnaDelDiaDeLaSemana_2].Value = NuevoValorDeDatoParaEsaFranjaHorarioDelDia_2;
DatagridViewNamed1.Row[_index].Cells[NumeroDeColumnaDelDiaDeLaSemana_3].Value = NuevoValorDeDatoParaEsaFranjaHorarioDelDia_3;
... [Y asi con cada día de la semana, para un horario/rango horario]
Así,en tiempo de ejecución, rellenas el texto, accediendo y asignando a cada nuevo Row, a cada Cell, que corresponde a la celda.
DatagridViewNamed1.Row[NumeroDeFila].Cells[NumeroDeColumna].Value = NuevoValorDeDato;
Y finalmente, cuando hallas rellenado de datos nuevos el DaraGridView, estaría bien que lo refresques,para que se repinte lo antes posible.
Lo puedes hacer asi:
DataGridView.Refresh();
O bien asi:
System.Windows.Form.Aplication.DoEvents();