Maskedtextbox completar con ceros

23/05/2008 - 04:45 por Guillermo Rojas | Informe spam
Como se hace para que un Maskedtextbox complete con ceros a la izquierda el
numero introducido ?

Preguntas similare

Leer las respuestas

#1 Luis Miguel Blanco
27/05/2008 - 12:25 | Informe spam
Hola Guillermo

Cuando el usuario salga del control (evento Leave) puedes probar a rellenar
con espacios en blanco a la izquierda del contenido introducido en la caja de
texto, y además establecerle como carácter indicador el cero; de esta forma
quedará relleno con ceros a la izquierda el valor tecleado en el control. Te
adjunto un bloque de código con un ejemplo.

//-
private void Form2_Load(object sender, EventArgs e)
{
this.maskedTextBox1.Mask = "99999";
this.maskedTextBox1.PromptChar = '0';
}

private void maskedTextBox1_Enter(object sender, EventArgs e)
{
this.maskedTextBox1.PromptChar = '_';
}

private void maskedTextBox1_Leave(object sender, EventArgs e)
{
this.maskedTextBox1.Text =
this.maskedTextBox1.Text.PadLeft(this.maskedTextBox1.Mask.Length);
this.maskedTextBox1.PromptChar = '0';
}
//-

Espero que te sirva de ayuda.

Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com
http://geeks.ms/blogs/lmblanco/


"Guillermo Rojas" wrote:

Como se hace para que un Maskedtextbox complete con ceros a la izquierda el
numero introducido ?



Respuesta Responder a este mensaje
#2 Guillermo Rojas
28/05/2008 - 13:30 | Informe spam
Hola Luis.
Una pregunta, se garantiza que siempre se ejecutará el Leave? ejemplo hasta
cuando se de clic a un boton de una barra de herramientas o se trate de
salir del form?
gracias

"Luis Miguel Blanco" escribió
en el mensaje news:
Hola Guillermo

Cuando el usuario salga del control (evento Leave) puedes probar a
rellenar
con espacios en blanco a la izquierda del contenido introducido en la caja
de
texto, y además establecerle como carácter indicador el cero; de esta
forma
quedará relleno con ceros a la izquierda el valor tecleado en el control.
Te
adjunto un bloque de código con un ejemplo.

//-
private void Form2_Load(object sender, EventArgs e)
{
this.maskedTextBox1.Mask = "99999";
this.maskedTextBox1.PromptChar = '0';
}

private void maskedTextBox1_Enter(object sender, EventArgs e)
{
this.maskedTextBox1.PromptChar = '_';
}

private void maskedTextBox1_Leave(object sender, EventArgs e)
{
this.maskedTextBox1.Text > this.maskedTextBox1.Text.PadLeft(this.maskedTextBox1.Mask.Length);
this.maskedTextBox1.PromptChar = '0';
}
//-

Espero que te sirva de ayuda.

Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com
http://geeks.ms/blogs/lmblanco/


"Guillermo Rojas" wrote:

Como se hace para que un Maskedtextbox complete con ceros a la izquierda
el
numero introducido ?



Respuesta Responder a este mensaje
#3 Luis Miguel Blanco
29/05/2008 - 00:05 | Informe spam
Hola Guillermo

Pues el evento Leave se producirá siempre y cuando el usuario pase el foco a
otro control que lo admita, por ejemplo, un control TextBox, Button, etc.,
situado en el formulario, incluso un TextBox que se encuentre dentro de un
ToolStrip (barra de herramientas), pero no se producirá si se hace clic en un
botón de un ToolStrip o en una opción de menú (control ToolStripMenuItem), ya
que en estos casos, dichos controles no toman el foco, sino que el foco sigue
permaneciendo en el control MaskedTextBox. Tampoco funcionaría al cerrar el
formulario, aunque en este último caso podrías utilizar el evento Validated
del control que sí se produciría al cerrar el formulario.

Otra técnica que podrías utilizar para obligar al control a tener ceros a la
izquierda consistiría en situar los ceros durante el tiempo en el que el
usuario se encuentra editando el MaskedTextBox. Sería algo parecido a simular
el proceso de introducción de números de la calculadora, por lo que
necesitarías controlar los eventos de edición KeyDown, KeyPress y KeyUp, para
ir añadiendo/quitando los ceros a la izquierda según vamos tecleando los
números o pulsando en las teclas de suprimir/retroceso. Te adjunto un ejemplo
de cómo podrías abordarlo.

//
private void maskedTextBox1_Enter(object sender, EventArgs e)
{
this.maskedTextBox1.Text = "00000";
SendKeys.Send("{END}");
}

private void maskedTextBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Left | e.KeyCode == Keys.Home)
{
e.SuppressKeyPress = true;
}
}

private void maskedTextBox1_KeyPress(object sender, KeyPressEventArgs e)
{
string sTextoControl = this.maskedTextBox1.Text.Trim() +
e.KeyChar.ToString();
char[] aNumeros = sTextoControl.ToCharArray();

int nIndice;
for (nIndice = 0; nIndice < aNumeros.Length - 1; nIndice++)
{
if (aNumeros[nIndice] != '0')
{
break;
}
}

this.maskedTextBox1.Text = sTextoControl.Substring(nIndice).PadLeft(5,
'0');
}

private void maskedTextBox1_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Delete)
{
this.maskedTextBox1.Text =
this.maskedTextBox1.Text.Remove(this.maskedTextBox1.Text.Length -
1).PadLeft(5, '0');
}

if (e.KeyCode == Keys.Back)
{
this.maskedTextBox1.Text = this.maskedTextBox1.Text.PadLeft(5, '0');
}
}
//

Espero que te resulte de ayuda.

Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com
http://geeks.ms/blogs/lmblanco/


"Guillermo Rojas" wrote:

Hola Luis.
Una pregunta, se garantiza que siempre se ejecutará el Leave? ejemplo hasta
cuando se de clic a un boton de una barra de herramientas o se trate de
salir del form?
gracias

"Luis Miguel Blanco" escribió
en el mensaje news:
> Hola Guillermo
>
> Cuando el usuario salga del control (evento Leave) puedes probar a
> rellenar
> con espacios en blanco a la izquierda del contenido introducido en la caja
> de
> texto, y además establecerle como carácter indicador el cero; de esta
> forma
> quedará relleno con ceros a la izquierda el valor tecleado en el control.
> Te
> adjunto un bloque de código con un ejemplo.
>
> //-
> private void Form2_Load(object sender, EventArgs e)
> {
> this.maskedTextBox1.Mask = "99999";
> this.maskedTextBox1.PromptChar = '0';
> }
>
> private void maskedTextBox1_Enter(object sender, EventArgs e)
> {
> this.maskedTextBox1.PromptChar = '_';
> }
>
> private void maskedTextBox1_Leave(object sender, EventArgs e)
> {
> this.maskedTextBox1.Text > > this.maskedTextBox1.Text.PadLeft(this.maskedTextBox1.Mask.Length);
> this.maskedTextBox1.PromptChar = '0';
> }
> //-
>
> Espero que te sirva de ayuda.
>
> Un saludo
> Luis Miguel Blanco
> http://www.dotnetmania.com
> http://geeks.ms/blogs/lmblanco/
>
>
> "Guillermo Rojas" wrote:
>
>> Como se hace para que un Maskedtextbox complete con ceros a la izquierda
>> el
>> numero introducido ?
>>
>>
>>



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida