Codigo compacto, bien estructurado y facil de leer

07/07/2006 - 13:57 por AT Baez | Informe spam
Buenos días,

Disculpen si el tema escogido confunde (traté de expresar mi objetivo).

Mi problema:

o tengo seis textBox(s).

o cada textBox responde a tres eventos (los mismos en cada caso:
"Enter", "KeyPress" y "Leave").

o los eventos: (Enter) borra el contenido, (KeyPress) solo números,
(Leave) asigna el valor.

Mi consulta:

Me pueden sugerir una solución de código compacto, bien estructurado y
fácil de leer.

El problema anterior lo resolvía en vb6 con una matriz de controles.



Pongo el codigo abajo por si no se entiende algo; muchas gracias,

Alberto



Mi código (que tendría que repetir seis veces):


private void textBox1_Enter(object sender, EventArgs e)

{

if (textBox1.Text != string.Empty) // Borro el contenido

textBox1.Text = string.Empty;

}

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)

{

if (!soloNum(e.KeyChar)) // Llamada al método soloNum

e.Handled = true;

}

private void textBox1_Leave(object sender, EventArgs e)

{

if (textBox1.Text != string.Empty)

{

v[0] += int.Parse(textBox1.Text); // Hago la asignación

label1.Text = v[0].ToString();

}

}

Preguntas similare

Leer las respuestas

#1 Alfredo Novoa
07/07/2006 - 14:16 | Informe spam
On Fri, 07 Jul 2006 11:57:03 GMT, "AT Baez"
wrote:


Mi código (que tendría que repetir seis veces):



No hace falta repetir nada, puedes asignar los mismos métodos a los
eventos de cada textBox.

private void textBox1_Enter(object sender, EventArgs e)

{

if (textBox1.Text != string.Empty) // Borro el contenido

textBox1.Text = string.Empty;

}



Mejor así:

private void textBox_Enter(object sender, EventArgs e)

{
TextBox textBox = sender as TextBox;

if (textBox.Text != string.Empty) // Borro el contenido
textBox.Text = string.Empty;
}

Este te sirve para los 6 textBox.


Saludos
Alfredo
Respuesta Responder a este mensaje
#2 Alberto Poblacion
07/07/2006 - 14:25 | Informe spam
"AT Baez" wrote in message
news:j_rrg.4552$
o tengo seis textBox(s).

o cada textBox responde a tres eventos (los mismos en cada caso:
"Enter", "KeyPress" y "Leave").

o los eventos: (Enter) borra el contenido, (KeyPress) solo números,
(Leave) asigna el valor.

Mi consulta:

Me pueden sugerir una solución de código compacto, bien estructurado y
fácil de leer.

El problema anterior lo resolvía en vb6 con una matriz de controles.



Si el procesamiento de los eventos es el mismo para los seis textboxes,
lo mejor es escribir una sola vez la rutina de cada uno de los eventos y
conectar los seis controles con la misma rutina (cosa que en VB6 no se podía
hacer, pero en .Net sí). Dentro de la rutina, el parámetro "sender" indica
cuál de los 6 controles es el que la ha disparado.
Para conectar todos los controles con un solo evento, en el Visual
Studio, en la ventana de diseño, seleccionar con ctrl-click los 6 controles,
ir a la ventanita de eventos (pulsando en el iconito que tiene un rayo), y
seleccionar la rutina deseada para el evento deseado.

Ejemplo de una de las rutinas:

private void TodosLosTextboxes_Enter(object sender, EventArgs e)
{
TextBox t = (TextBox)sender;
if (t.Text != string.Empty) // Borro el contenido
t.Text = string.Empty;
}
Respuesta Responder a este mensaje
#3 AT Baez
07/07/2006 - 15:39 | Informe spam
Hola amigos: Alfredo y Alberto,
Aprecio vuestra ayuda; puedo ver el punto expuesto por ambos, de echo ya he
reducido conciderablemente el codigo escrito anteriormente. Muchas gracias,
Alberto
"AT Baez" wrote in message
news:j_rrg.4552$
Buenos días,

Disculpen si el tema escogido confunde (traté de expresar mi objetivo).

Mi problema:

o tengo seis textBox(s).

o cada textBox responde a tres eventos (los mismos en cada caso:
"Enter", "KeyPress" y "Leave").

o los eventos: (Enter) borra el contenido, (KeyPress) solo números,
(Leave) asigna el valor.

Mi consulta:

Me pueden sugerir una solución de código compacto, bien estructurado y
fácil de leer.

El problema anterior lo resolvía en vb6 con una matriz de controles.



Pongo el codigo abajo por si no se entiende algo; muchas gracias,

Alberto



Mi código (que tendría que repetir seis veces):


private void textBox1_Enter(object sender, EventArgs e)

{

if (textBox1.Text != string.Empty) // Borro el contenido

textBox1.Text = string.Empty;

}

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)

{

if (!soloNum(e.KeyChar)) // Llamada al método soloNum

e.Handled = true;

}

private void textBox1_Leave(object sender, EventArgs e)

{

if (textBox1.Text != string.Empty)

{

v[0] += int.Parse(textBox1.Text); // Hago la asignación

label1.Text = v[0].ToString();

}

}

Respuesta Responder a este mensaje
#4 Vyacheslav Popov
09/07/2006 - 20:58 | Informe spam
Otra solución es crear un control personalizado (superclase) que se
encargaría de hacer las operaciones comunes.

Saludos.
"AT Baez" escribió en el mensaje
news:j_rrg.4552$
Buenos días,

Disculpen si el tema escogido confunde (traté de expresar mi objetivo).

Mi problema:

o tengo seis textBox(s).

o cada textBox responde a tres eventos (los mismos en cada caso:
"Enter", "KeyPress" y "Leave").

o los eventos: (Enter) borra el contenido, (KeyPress) solo números,
(Leave) asigna el valor.

Mi consulta:

Me pueden sugerir una solución de código compacto, bien estructurado y
fácil de leer.

El problema anterior lo resolvía en vb6 con una matriz de controles.



Pongo el codigo abajo por si no se entiende algo; muchas gracias,

Alberto



Mi código (que tendría que repetir seis veces):


private void textBox1_Enter(object sender, EventArgs e)

{

if (textBox1.Text != string.Empty) // Borro el contenido

textBox1.Text = string.Empty;

}

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)

{

if (!soloNum(e.KeyChar)) // Llamada al método soloNum

e.Handled = true;

}

private void textBox1_Leave(object sender, EventArgs e)

{

if (textBox1.Text != string.Empty)

{

v[0] += int.Parse(textBox1.Text); // Hago la asignación

label1.Text = v[0].ToString();

}

}

Respuesta Responder a este mensaje
#5 AT Baez
09/07/2006 - 23:20 | Informe spam
Hola Vyacheslav,
Me puedes dar algunas pistas?
Gracias,
Alberto
-
"Vyacheslav Popov" wrote in message
news:%23oxv$
Otra solución es crear un control personalizado (superclase) que se
encargaría de hacer las operaciones comunes.

Saludos.
"AT Baez" escribió en el mensaje
news:j_rrg.4552$
Buenos días,

Disculpen si el tema escogido confunde (traté de expresar mi objetivo).

Mi problema:

o tengo seis textBox(s).

o cada textBox responde a tres eventos (los mismos en cada caso:
"Enter", "KeyPress" y "Leave").

o los eventos: (Enter) borra el contenido, (KeyPress) solo números,
(Leave) asigna el valor.

Mi consulta:

Me pueden sugerir una solución de código compacto, bien estructurado y
fácil de leer.

El problema anterior lo resolvía en vb6 con una matriz de controles.



Pongo el codigo abajo por si no se entiende algo; muchas gracias,

Alberto



Mi código (que tendría que repetir seis veces):


private void textBox1_Enter(object sender, EventArgs e)

{

if (textBox1.Text != string.Empty) // Borro el contenido

textBox1.Text = string.Empty;

}

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)

{

if (!soloNum(e.KeyChar)) // Llamada al método soloNum

e.Handled = true;

}

private void textBox1_Leave(object sender, EventArgs e)

{

if (textBox1.Text != string.Empty)

{

v[0] += int.Parse(textBox1.Text); // Hago la asignación

label1.Text = v[0].ToString();

}

}





Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida