Compartir a través de


Mostrar fechas: Usar los controles MonthCalendar y DateTimePicker

Actualización: noviembre 2007

En esta lección, aprenderá la forma de mostrar la fecha en un formulario Windows Forms. También aprenderá a realizar una acción cuando un usuario selecciona una fecha.

Al usar un control que muestra un calendario, los usuarios pueden seleccionar una fecha fácilmente. El uso de estos controles también garantiza que se aplica formato a la fecha correctamente. Puede mostrar un calendario con un control MonthCalendar o un control DateTimePicker.

El control MonthCalendar permite mostrar un calendario de uno o más meses. Si usa este control, los usuarios pueden seleccionar una sola fecha o un intervalo de fechas.

El control DateTimePicker tiene dos estados. De forma predeterminada, el control DateTimePicker aparece como un cuadro de texto junto con una flecha de lista desplegable. Cuando el usuario hace clic en la flecha de lista desplegable, aparece un calendario. Si usa este control, el usuario solo puede seleccionar una fecha. El control DateTimePicker también permite mostrar horas en lugar de fechas.

El proceso que se usa para recuperar una fecha desde estos controles varía dependiendo del control que se utilice. Use la propiedad Start para un control MonthCalendar y use la propiedad Value para un control DateTimePicker.

Inténtelo.

Para recuperar una fecha y mostrarla en una etiqueta

  1. En el menú Archivo, haga clic en Nuevo proyecto.

    Aparecerá el cuadro de diálogo Nuevo proyecto.

  2. Haga clic en Aplicación de Windows Forms y, a continuación, en Aceptar.

  3. Agregue un control Label al formulario, dejando el nombre predeterminado Label1.

  4. Quite el texto de la propiedad Text del control Label.

  5. Agregue un control MonthCalendar al formulario, dejando el nombre predeterminado MonthCalendar1.

  6. Haga doble clic en el control MonthCalendar para incluir el controlador de eventos predeterminado en el Editor de código.

  7. En el controlador del evento MonthCalendar1_DateChanged, agregue el siguiente código para agregar elementos a la lista.

    Me.Label1.Text = CStr(Me.MonthCalendar1.SelectionRange.Start)
    
  8. Vuelva a la vista de diseñador y agregue un control DateTimePicker al formulario, dejando el nombre predeterminado DateTimePicker1.

  9. Haga doble clic en el control DateTimePicker para incluir el controlador de eventos predeterminado en el Editor de código.

  10. En el controlador del evento DateTimePicker_ValueChanged, agregue el siguiente código para agregar elementos a la lista.

    Me.Label1.Text = CStr(Me.DateTimePicker1.Value)
    
  11. Presione F5 para ejecutar el programa.

  12. Cuando aparezca el formulario, haga clic en una fecha en el control MonthCalendar y compruebe que la fecha se muestra en la etiqueta.

  13. Haga clic en la flecha de lista desplegable del control DateTimePicker y seleccione una fecha.

    Se mostrarán la fecha y la hora en la etiqueta.

  14. Cierre el programa.

Recuperar varias fechas

Puede recuperar un intervalo de fechas seleccionadas en un control MonthCalendar mediante las propiedades Start y End de SelectionRange. De forma predeterminada, el número máximo de días que se pueden seleccionar es siete, pero puede cambiar este valor estableciendo la propiedad MaxSelectionCount. Puede determinar si un intervalo está seleccionado comprobando si la fecha de inicio y de finalización son iguales.

Para recuperar un intervalo de fechas de un control de calendario mensual

  1. Cambie el código en el controlador del evento MonthCalendar1_DateChanged por el código siguiente. Este código establece el número máximo de días (dos semanas) que se pueden seleccionar en el control. Muestra la fecha de inicio en la etiqueta si solamente se ha seleccionado un día, pero muestra un intervalo de fechas cuando se ha seleccionado un intervalo en el control MonthCalendar.

    Me.MonthCalendar1.MaxSelectionCount = 14
    
    If Me.MonthCalendar1.SelectionRange.Start = _
        Me.MonthCalendar1.SelectionRange.End Then
    
        Me.Label1.Text = CStr(Me.MonthCalendar1.SelectionStart)
    
    Else
    
        Me.Label1.Text = Me.MonthCalendar1.SelectionRange.Start & _
            " - " & Me.MonthCalendar1.SelectionRange.End
    
    End If
    
  2. Presione F5 para ejecutar el programa.

  3. Cuando aparezca el formulario, seleccione un intervalo de fechas en el control MonthCalendar y compruebe que el intervalo de fechas aparece en la etiqueta.

  4. Cierre el programa.

Aplicar formato a fechas

Puede aplicar formato a las fechas devueltas por el control MonthCalendar y el control DateTimePicker mediante la función de FormatDateTime. Puede usar varias constantes para indicar el formato de la fecha:

Constante

Descripción

Ejemplo (basado en la configuración regional predeterminada de inglés de Estados Unidos)

DateFormat.GeneralDate

Muestra una fecha, una hora o ambas. Si hay una fecha, se muestra con formato de fecha corta. Si hay una hora, se muestra con formato de hora larga. De estar presentes, se mostrarán ambas partes.

22/11/1963 12:00:00 p.m.

DateFormat.LongDate

Muestra una fecha con el formato de fecha larga especificado en la configuración regional del equipo.

Viernes, 22 de noviembre, 1963

DateFormat.ShortDate

Muestra una fecha con el formato de fecha corta especificado en la configuración regional del equipo.

11/22/1963

DateFormat.LongTime

Muestra una hora con el formato de hora larga especificado en la configuración regional del equipo.

12:00:00 p.m.

DateFormat.ShortTime

Muestra una hora con el formato de 24 horas (hh:mm).

12:00

Para aplicar formato a la fecha en la etiqueta

  1. Cambie el código en el controlador del evento MonthCalendar1_DateChanged por el código siguiente. Este código aplica formato a la fecha devuelta como fecha larga.

    Me.MonthCalendar1.MaxSelectionCount = 14
    
    If Me.MonthCalendar1.SelectionRange.Start = _
        Me.MonthCalendar1.SelectionRange.End Then
    
        Me.Label1.Text = FormatDateTime( _
            Me.MonthCalendar1.SelectionStart, _
            DateFormat.LongDate)
    Else
        Me.Label1.Text = FormatDateTime( _
            Me.MonthCalendar1.SelectionRange.Start, _
            DateFormat.LongDate) & " - " & FormatDateTime( _
            Me.MonthCalendar1.SelectionRange.End, DateFormat.LongDate)
    End If
    
  2. Cambie el código en el controlador del evento DatePicker1_ValueChanged por el código siguiente. Este código aplica formato a la fecha devuelta como fecha larga.

    Me.Label1.Text = FormatDateTime(Me.DateTimePicker1.Value, _
        DateFormat.LongDate)
    
  3. Presione F5 para ejecutar el programa.

  4. Cuando aparezca el formulario, haga clic en una fecha o en un intervalo de fechas en el control MonthCalendar. Compruebe que la fecha o el intervalo de fechas aparece en la etiqueta con formato de fecha larga.

  5. Haga clic en una fecha en el control DateTimePicker y compruebe que la fecha aparece en la etiqueta con formato de fecha larga.

  6. Cierre el programa.

Pasos siguientes

En esta lección aprendió a recuperar las fechas seleccionadas en los controles MonthCalendar y DateTimePicker, y a mostrarlas en un formulario Windows Forms. También aprendió a mostrar un intervalo de fechas y a aplicar formato a las fechas recuperadas. En la siguiente lección aprenderá a usar los controles de datos.

Próxima lección: Controles de datos: mostrar datos en controles DataGridView

Vea también

Referencia

Información general sobre el control DateTimePicker (formularios Windows Forms)

Introducción al control MonthCalendar (formularios Windows Forms)

FormatDateTime (Función, Visual Basic)

Otros recursos

Crear la apariencia visual de un programa: introducción a los formularios Windows Forms