none
Monthcalendar señalar en negrita las fechas de una tabla RRS feed

  • 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
    lunes, 4 de julio de 2011 5:12

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
    lunes, 4 de julio de 2011 5:50
  • 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
    lunes, 4 de julio de 2011 11:08

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
    lunes, 4 de julio de 2011 5:50
  • Podrias ayudarme con el Array

    Dim arrary(365) as date

    Como cargo el arrary con el For?

     

     

    Saludos Forlafor


    forlanfor
    lunes, 4 de julio de 2011 7:34
  • 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
    lunes, 4 de julio de 2011 11:08
  • Ok, gracias por ayudarnos y compartir.

     

    Saludos César


    forlanfor
    lunes, 4 de julio de 2011 11:59