2011-07-13 23 views
5

Tengo un formulario de Windows con datos encuadernados en un cuadro de texto que muestra un número de teléfono con el siguiente formato: (800) 555-5555. Los datos se almacenan como decimales y luego los visualizo en el formato correcto. El problema es que cuando hago clic en el cuadro de texto y luego hago clic en algo más, cambia de (800) 555-5555 al 8005555555. El formateo se pierde. Intenté volver a formatear los dígitos en el evento textBox leave, pero eso no funciona. ¿Qué podría estar causando esto?Se perdió el formateo de TextBox cuando el foco cambia

vs 2010 C#

a formato primero hago esto

private string FormatCustPhoneBox(string a) 
{ 
      string phone = a; 

      for (int j = 0; j < phone.Length; j++) 
      { 
       if (!Char.IsDigit(phone, j)) 
       { 
        phone = phone.Remove(j, 1); //Remove any non numeric chars. 
        j--; 
       } 
      } 
      return phone; 
} 

continuación, hago esto

private void FormatPhoneNum() 
    { 
     decimal iPhone = decimal.Parse(CustomerPhone1Box.Text); 
     CustomerPhone1Box.Text = string.Format("{0:(###) ###-####}", iPhone); 
    } 
+4

¿Winforms? ¿ÁSPID? WPF? – rerun

+0

Winforms VS 2010 C# – John

+0

¿Cómo está forzando el cuadro de texto para que muestre el formato correcto? ¿Puedes publicar algo de tu código? –

Respuesta

4

¿Está el enlace de datos de cuadro de texto? En caso afirmativo, convierta los datos a una cadena formateada y agréguelos al tipo de datos de cadena en lugar de al número. O use el cuadro de texto enmascarado.

+0

Gracias a todos por sus respuestas. Resolví el problema agregando el código de formato al evento Validate en lugar del evento Leave. – John

Cuestiones relacionadas