Principales respuestas
Monthcalendar señalar en negrita las fechas de una tabla

Pregunta
-
Buenos dias, tengo un control monthcalendar donde de vez encuando lo actualizo añadiendo los servicios realizados, mi problema es que al abrirlo no se cual fue el ultimo dia que lo actualice, he pensado que al cargar la monthcalendar coja las fechas de la tablar y me las marque en negrita.
He visto varios hilos pero no he podido solucionarlcon esta sentecia recorro todas las fechas de la tabla pero solamente señalo en negrita la ultima.
Dim año, dia, mes As Integer For Each fila As DataRow In dt.Rows dia = fila("fecha").ToString.Substring(0, 2) mes = fila("fecha").ToString.Substring(3, 2) año = fila("fecha").ToString.Substring(6, 4) Me.MonthCalendar1.BoldedDates = New System.DateTime() {New System.DateTime(año, mes, dia, 0, 0, 0, 0)} Next
Con esta otra controlo el intrevalo desde - hasta pero las fechas del medio no las marca en negrita.
Dim VacationDates As DateTime() = {fechai, fechaf} MonthCalendar1.BoldedDates = VacationDates
Saludos Y Gracias
forlanfor
Respuestas
-
El problema es que al ejecutar esta sentencia:
Me.MonthCalendar1.BoldedDates = New System.DateTime() {...}
dentro del bucle, lo que haces es que a cada vuelta del bucle cambias (no añades) la fecha que se marca en negrita.BoldedDates es un Array de fechas. Usa el bucle para guardar dentro de un array todas las fechas deseadas y depués, FUERA del bucle, haz Me.MonthCalendar1.BoldedDates=elArrayDeFechas.
- Propuesto como respuesta jtorrecilla lunes, 4 de julio de 2011 9:38
- Marcado como respuesta Forlanfor lunes, 4 de julio de 2011 11:54
-
Para no tenerte que preocupar de la dimensión del Array, es preferible que dentro del bucle llenes un List(of DateTime) (en System.Collections.Generic), y luego le hagas un ToArray para convertirlo en Array:
Dim año, dia, mes As Integer Dim listaFechas as New List(of DateTime) For Each fila As DataRow In dt.Rows dia = fila("fecha").ToString.Substring(0, 2) mes = fila("fecha").ToString.Substring(3, 2) año = fila("fecha").ToString.Substring(6, 4) listaFechas.Add(New System.DateTime(año, mes, dia, 0, 0, 0, 0)) Next Me.MonthCalendar1.BoldedDates = listaFechas.ToArray()
- Marcado como respuesta Forlanfor lunes, 4 de julio de 2011 11:54
Todas las respuestas
-
El problema es que al ejecutar esta sentencia:
Me.MonthCalendar1.BoldedDates = New System.DateTime() {...}
dentro del bucle, lo que haces es que a cada vuelta del bucle cambias (no añades) la fecha que se marca en negrita.BoldedDates es un Array de fechas. Usa el bucle para guardar dentro de un array todas las fechas deseadas y depués, FUERA del bucle, haz Me.MonthCalendar1.BoldedDates=elArrayDeFechas.
- Propuesto como respuesta jtorrecilla lunes, 4 de julio de 2011 9:38
- Marcado como respuesta Forlanfor lunes, 4 de julio de 2011 11:54
-
-
Para no tenerte que preocupar de la dimensión del Array, es preferible que dentro del bucle llenes un List(of DateTime) (en System.Collections.Generic), y luego le hagas un ToArray para convertirlo en Array:
Dim año, dia, mes As Integer Dim listaFechas as New List(of DateTime) For Each fila As DataRow In dt.Rows dia = fila("fecha").ToString.Substring(0, 2) mes = fila("fecha").ToString.Substring(3, 2) año = fila("fecha").ToString.Substring(6, 4) listaFechas.Add(New System.DateTime(año, mes, dia, 0, 0, 0, 0)) Next Me.MonthCalendar1.BoldedDates = listaFechas.ToArray()
- Marcado como respuesta Forlanfor lunes, 4 de julio de 2011 11:54
-