SoloCodigo

CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: nix2008 en Martes 18 de Noviembre de 2008, 16:46

Título: Resetear un formulario
Publicado por: nix2008 en Martes 18 de Noviembre de 2008, 16:46
Buenas tardes,
tengo un pequeño problema que no consigo resolver ya que quiero un botón que al pulsarlo resete mi formulario a sus valores iniciales. Habría alguna forma de conseguir esto??

Muchas gracias por adelantado
Título: Re: Resetear un formulario
Publicado por: E.Baley en Martes 18 de Noviembre de 2008, 19:45
Por "resete mi formulario a sus valores iniciales" supongo que te refieres a los controles que contiene (textBoxes, Campos para insertar números, etc...). Si es así, tendrias que guardar los valores iniciales en algunas variables, y luego al pulsar el botón, establecer cada control con su valor inicial. Por ejemplo, para un Label, un TextBox y un NumericUpDown podrias hacer:
String valorIni_01 = "Cadena 1";
String valorIni_02 = "Cadena 2";
int valorIni_03 = 25;
etc...

Luego al pulsar el botón:
Lab01.Text = valorIni_01;
TextBox01.Text = valorIni_02;
NumericUpDown01.Value = valorIni_03;

etc...
Título: Re: Resetear un formulario
Publicado por: nix2008 en Miércoles 19 de Noviembre de 2008, 10:46
Probaré esto que me dices, muchas gracias por tu respuesta.  :D
Título: Re: Resetear un formulario
Publicado por: sergiotarrillo en Miércoles 19 de Noviembre de 2008, 23:17
También podrías hacerlo para todos los controles, recorriendo los controles del formulario, panel o contenedor:

Código: Text
  1.  private void LimpiarFormulario(Control objContenedor)
  2.        {
  3.            // para cada control contenido en la colección
  4.            foreach (Control obj in objContenedor.Controls)
  5.            {
  6.  
  7.                // si tiene hijos, recórrelos de forma recursiva
  8.                if (obj.HasChildren)    LimpiarFormulario(obj);
  9.                if (obj is TextBox)     ((TextBox)obj).Text = "";
  10.                if (obj is CheckBox)    ((CheckBox)obj).Checked = false;
  11.                if (obj is RadioButton) ((RadioButton)obj).Checked = false;
  12.            }
  13.        }
  14.  

Más información en el siguiente artículo: typeof vs if... y el limpiado (clear) de controles (http://geeks.ms/blogs/sergiotarrillo/archive/2006/12/14/7518.aspx)

saludos,
Título: Re: Resetear un formulario
Publicado por: E.Baley en Jueves 20 de Noviembre de 2008, 09:13
claro, es una forma más elegante pero implica que el valor inicial de cada control es siempre el mismo (" " para los textos, false para checked, etc...)
saludos
Título: Re: Resetear un formulario
Publicado por: nix2008 en Jueves 20 de Noviembre de 2008, 09:26
Es justo lo que necesitaba, muchas gracias