Buen día para todos,
Juan, te comento que el proceso es un poco largo para lograr el objetivo, ahora bien te explico como lo hice:
Primero: Todos los controles del horario son de tipo "Label", debes ir creando uno por uno y acomodarlos uno al lado del otro hasta formar la cuadricula que vez.
Segundo: Debes crear una tabla en la base de datos con un campo (Día) para almacenar cada día, un campo (Hora) para cada hora (8,9,10...) asumo que manejan horario de oficina por lo que debe ser mas corto para ti, ahora debes agregar un valor inicial para indicar que esa hora esta libre, puede ser la palabra "No", o el numero cero "0", bueno algún valor que te indique que esa hora esta libre.
Tercero: Mediante un "Select" sencillo haces la consulta a la tabla validando el día te traerá el horario.
Cuarto: En cada uno de los "Label" debes validar la hora asignada para este "Label" mediante un condicional "If" si la hora esta libre pues cambias el valor por otro que te indique que esta ocupado, para luego modificar la propiedad "BackColor" del "Label" según el estado de esa hora (Esto cuando se de clic en un Label), para cuando se carga el horario se debe validar y cambiar la propiedad "BackColor" del "Label" para que puedas ver cuales están libres y cuales ocupados.
Ahora para mi caso no interesaba la fecha pero en tu caso para una agenda que supongo ser mensual debes en el campo (Día) almacenaras el día del mes (1,2,3,4,5....) para que luego con un control "DateTimePicker" puedas seleccionar cualquier día del mes y modificar la agenda.
Espero haber sido de ayuda.
Que tengan buen día,
El conocimiento siempre debe ser compartido, para que entre todos aprendamos un poco mas...
Mas ejemplos acá...
https://aprendamosdeprogramacion.wordpress.com/