none
¿MaskedTextbox en blanco? RRS feed

  • Pregunta

  • Necesito hacer que al cargar un form y leer el campo fecha de la base de datos, si la fecha no ha sido ingresada (Es decir, si el campo está en blanco), se deseleccionen unos checkboxes... El problema está en que uso un maskedTextbox...

    Con un txt común verificaría: If txtFecha.Text = "" Then

    ¿Pero con el masked? Probé If txtFecha.Text = "__/__/____" Then
     Pero no sale...

    Gabriela
    jueves, 9 de julio de 2009 4:12

Respuestas

  • Tienes que indicar que no deseas que en la propiedad Text del control MaskedTextBox se incluyan los literales de cadena y de solicitud de datos:

         MaskedTextBox1.TextMaskFormat = MaskFormat.ExcludePromptAndLiterals

    Ahora, verificarías si existe una cadena de longitud cero de la siguiente manera:

         If MaskedTextBox1.Text = String.Empty Then
                MessageBox.Show("Fecha en blanco.")
         Else
                MessageBox.Show(MaskedTextBox1.Text)
         End If

    Pero, ¡ojo! Si excluyes los literales de cadena y de solicitud de datos, obviamente el valor no tendrá formato de fecha. Por ejemplo, el día de hoy 09/07/2009, será devuelto como una cadena alfanumérica con el siguiente valor:

         09072009

    Por tanto, para convertirla a un tipo de dato DateTime válido, tendrás que utilizar la función «ParseExact» de la estructura DateTime, tal y como muestra el siguiente ejemplo:

         Dim ci As CultureInfo = CultureInfo.CurrentCulture

         Dim fecha As String = String.Format("{0:dd/MM/yyyy}", _
                                          DateTime.ParseExact(MaskedTextBox1.Text, "ddMMyyyy", ci.DateTimeFormat))

         MessageBox.Show(fecha)

    Para utilizar la clase CultureInfo, tienes que importar el siguiente espacio de nombres:

         Imports System.Globalization


    Enrique Martínez [MS MVP - VB]
    jueves, 9 de julio de 2009 13:55
    Moderador

Todas las respuestas

  • Tienes que indicar que no deseas que en la propiedad Text del control MaskedTextBox se incluyan los literales de cadena y de solicitud de datos:

         MaskedTextBox1.TextMaskFormat = MaskFormat.ExcludePromptAndLiterals

    Ahora, verificarías si existe una cadena de longitud cero de la siguiente manera:

         If MaskedTextBox1.Text = String.Empty Then
                MessageBox.Show("Fecha en blanco.")
         Else
                MessageBox.Show(MaskedTextBox1.Text)
         End If

    Pero, ¡ojo! Si excluyes los literales de cadena y de solicitud de datos, obviamente el valor no tendrá formato de fecha. Por ejemplo, el día de hoy 09/07/2009, será devuelto como una cadena alfanumérica con el siguiente valor:

         09072009

    Por tanto, para convertirla a un tipo de dato DateTime válido, tendrás que utilizar la función «ParseExact» de la estructura DateTime, tal y como muestra el siguiente ejemplo:

         Dim ci As CultureInfo = CultureInfo.CurrentCulture

         Dim fecha As String = String.Format("{0:dd/MM/yyyy}", _
                                          DateTime.ParseExact(MaskedTextBox1.Text, "ddMMyyyy", ci.DateTimeFormat))

         MessageBox.Show(fecha)

    Para utilizar la clase CultureInfo, tienes que importar el siguiente espacio de nombres:

         Imports System.Globalization


    Enrique Martínez [MS MVP - VB]
    jueves, 9 de julio de 2009 13:55
    Moderador
  • ¡¡Muchas gracias!! ¡¡¡Una respuesta perfecta!!!
    Gabriela
    jueves, 9 de julio de 2009 17:51