Me preguntaba, ¿hay alguna manera de restablecer todas las casillas de verificación, cuadros de texto, numéricos y otros controles de la espalda a los valores predeterminados sin necesidad de escribir código para cada control de forma individual? Este es el código que he probado, pero parece que no funciona:

for (int i = 0; i < this.Controls.Count; i++)
{
    this.Controls[i].ResetText();
}

EDICIÓN:

He arreglado la configuración manual de los valores de control, lo siento por todos los problemas >.<.

Supongo que dado que usted está a solo un bucle sobre el nivel superior de los controles, usted tiene que comprobar de forma recursiva para los controles y hacer un ResetText() (así que si usted tiene su cuadro de texto, una casilla de verificación decir dentro de un panel, a continuación, esto no verificación de los controles en el panel)
Me consulte, ¿existe alguna forma para hacer esto posible? O tengo que comprobar a través de todos los paneles y otros contenedores?
Sí, Es posible. Ver mi respuesta.
Sí, es un poco de obras, pero también restablece las etiquetas :p. Tratando de resolver el problema de la atm.

OriginalEl autor Yuki Kutsuya | 2013-03-22

9 Comentarios

  1. 11

    ¿ Como crear la clase y llamar a esta

    De verificación : Restablecer todos los Controles (Textbox, ComboBox, Casilla de verificación, cuadro de lista) en un Formulario de Windows con C#

    private void button1_Click(object sender, EventArgs e)
    {
       Utilities.ResetAllControls(this);
    }

    public class Utilities
        {
            public static void ResetAllControls(Control form)
            {
                foreach (Control control in form.Controls)
                {
                    if (control is TextBox)
                    {
                        TextBox textBox = (TextBox)control;
                        textBox.Text = null;
                    }
    
                    if (control is ComboBox)
                    {
                        ComboBox comboBox = (ComboBox)control;
                        if (comboBox.Items.Count > 0)
                            comboBox.SelectedIndex = 0;
                    }
    
                    if (control is CheckBox)
                    {
                        CheckBox checkBox = (CheckBox)control;
                        checkBox.Checked = false;
                    }
    
                    if (control is ListBox)
                    {
                        ListBox listBox = (ListBox)control;
                        listBox.ClearSelected();
                    }
                }
            }      
        }
    Esto no parece funcionar, es a causa de que mis artículos son en un TabControl?
    supongo que tendrá que recorrer el TabPages, a continuación,
    +1 a 2 años y esto funcionó muy bien para mí. He quitado el foreach dentro del método y interated en la declaración, así que no necesitan ser particular sobre el Control. foreach (Control ctrl in grp1.Controls) { Utilities.ResetAllControls(ctrl); }

    OriginalEl autor Pranay Rana

  2. 7

    Puede crear el formulario de nuevo y desechar el viejo.

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
    
        private void btnReset_Click(object sender, EventArgs e)
        {
            Form1 NewForm = new Form1();           
            NewForm.Show();
            this.Dispose(false);
        }
    }
    Sé que este hilo es viejo, pero ¿hay alguna razón que yo no debería hacer esto? Parece ser un heck de mucho más fácil que cualquiera de las otras respuestas.

    OriginalEl autor Angus Chung

  3. 4
    foreach (Control field in container.Controls)
                {
                    if (field is TextBox)
                        ((TextBox)field).Clear();
                    else if (field is ComboBox)
                        ((ComboBox)field).SelectedIndex=0;
                    else
                        dgView.DataSource = null;
                        ClearAllText(field);
                }

    OriginalEl autor Mohamed Yunus

  4. 1

    Adicionales-> Para desactivar los Controles de Niño
    La siguiente función clara la anidados(Niño) controles también, envolver en una clase.

     public static void ClearControl(Control control)
            {
                if (control is TextBox)
                {
                    TextBox txtbox = (TextBox)control;
                    txtbox.Text = string.Empty;
                }
                else if (control is CheckBox)
                {
                    CheckBox chkbox = (CheckBox)control;
                    chkbox.Checked = false;
                }
                else if (control is RadioButton)
                {
                    RadioButton rdbtn = (RadioButton)control;
                    rdbtn.Checked = false;
                }
                else if (control is DateTimePicker)
                {
                    DateTimePicker dtp = (DateTimePicker)control;
                    dtp.Value = DateTime.Now;
                }
                else if (control is ComboBox)
                {
                    ComboBox cmb = (ComboBox)control;
                    if (cmb.DataSource != null)
                    {
                        cmb.SelectedItem = string.Empty;
                        cmb.SelectedValue = 0;
                    }
                }
                ClearErrors(control);
                //repeat for combobox, listbox, checkbox and any other controls you want to clear
                if (control.HasChildren)
                {
                    foreach (Control child in control.Controls)
                    {
                        ClearControl(child);
                    }
                }
    
    
            }

    OriginalEl autor Teju MB

  5. 0

    Puede restablecer todos los controles de un cierto tipo. Algo así como

    foreach(TextBox tb in this.Controls.OfType<TextBox>().ToArray())
    {
       tb.Clear();
    }

    Pero no se puede restablecer todos los controles a la vez

    OriginalEl autor Tomtom

  6. 0

    Respuesta rápida, tal vez te ayude:

    private void button1_Click(object sender, EventArgs e)
    {            
        Form2 f2 = new Form2();
        f2.ShowDialog();
        while (f2.DialogResult == DialogResult.Retry)
        {
            f2 = new Form2();
            f2.ShowDialog();
        }
    }

    y en Form2 («configuración»):

    private void button1_Click(object sender, EventArgs e)
    {
        DialogResult = DialogResult.OK;
        Close();
    }
    
    private void button2_Click(object sender, EventArgs e)
    {
        DialogResult = DialogResult.Retry;
        Close();
    }
    Pero esto reinicia el formulario no? La configuración se cargan cuando se inicia el formulario, así que no estoy muy seguro de si esto va a funcionar :(.
    Yo no lo entiendo. Sí, se reiniciará el Formulario. No es eso lo que quieres? (Si la configuración se carga en el constructor – que será para la nueva instancia).
    Okai, voy a darle una oportunidad, pero la configuración se cargan desde un archivo XML externo. EDIT: Sí, esto no parece funcionar para mí, por alguna razón…
    Están cargadas en la Configuración de la Forma-constructor?
    No, no lo son. Ellos están cargados en el Form_Load evento a través de una backgroundworker.

    OriginalEl autor ispiro

  7. 0

    Recientemente he tenido que hacer esto para los cuadros de texto y Casillas de verificación, pero el uso de JavaScript …

    Cómo restablecer el cuadro de texto y casillas de verificación de los controles en un ASP.net documento

    Aquí está el código …

    <script src="http://code.jquery.com/jquery-1.7.1.js" type="text/javascript"></script>
    
    <script type="text/javascript">
          function ResetForm() {
              //get the all the Input type elements in the document
              var AllInputsElements = document.getElementsByTagName('input');
              var TotalInputs = AllInputsElements.length;
    
              //we have to find the checkboxes and uncheck them
              //note: <asp:checkbox renders to <input type="checkbox" after compiling, which is why we use 'input' above
              for(var i=0;i< TotalInputs ; i++ )
              {
                if(AllInputsElements[i].type =='checkbox')
                {
                    AllInputsElements[i].checked = false;
                }
              }
    
              //reset all textbox controls
              $('input[type=text], textarea').val('');
    
              Page_ClientValidateReset();
              return false;
          }
    
          //This function resets all the validation controls so that they don't "fire" up
          //during a post-back.
          function Page_ClientValidateReset() {
              if (typeof (Page_Validators) != "undefined") {
                  for (var i = 0; i < Page_Validators.length; i++) {
                      var validator = Page_Validators[i];
                      validator.isvalid = true;
                      ValidatorUpdateDisplay(validator);
                  }
              }
          }
    </script>

    Y llamada con un botón o cualquier otro método …

    <asp:button id="btnRESET" runat="server" onclientclick="return ResetForm();" text="RESET" width="100px"></asp:button>

    Si no uso ValidationControls en su sitio web, acaba de quitar todo el código en referencia a lo anterior, y de la llamada Page_ClientValidateReset();

    Estoy seguro de que usted puede expandir para cualquier otro control mediante el uso de DOM. Y puesto que no hay ningún post al servidor, es más rápido y no «intermitente».

    OriginalEl autor LoftyWofty

  8. 0
        function setToggleInputsinPnl(pnlName) {
        var domCount = pnlName.length;
        for (var i = 0; i < domCount; i++) {
            if (pnlName[i].type == 'text') {
                pnlName[i].value = '';
            } else if (pnlName[i].type == 'select-one') {
                   pnlName[i].value = '';
            }
        }
    }

    OriginalEl autor Alireza Masali

  9. 0

    Si usted tiene algunos de los paneles o groupboxes restablecimiento de los campos debe ser recursivo.

    public class Utilities
    {
        public static void ResetAllControls(Control form)
        {
            foreach (Control control in form.Controls)
            {
                RecursiveResetForm(control);
            }
        }
    
        private void RecursiveResetForm(Control control)
        {            
            if (control.HasChildren)
            {
                foreach (Control subControl in control.Controls)
                {
                    RecursiveResetForm(subControl);
                }
            }
            switch (control.GetType().Name)
            {
                case "TextBox":
                    TextBox textBox = (TextBox)control;
                    textBox.Text = null;
                    break;
    
                case "ComboBox":
                    ComboBox comboBox = (ComboBox)control;
                    if (comboBox.Items.Count > 0)
                        comboBox.SelectedIndex = 0;
                    break;
    
                case "CheckBox":
                    CheckBox checkBox = (CheckBox)control;
                    checkBox.Checked = false;
                    break;
    
                case "ListBox":
                    ListBox listBox = (ListBox)control;
                    listBox.ClearSelected();
                    break;
    
                case "NumericUpDown":
                    NumericUpDown numericUpDown = (NumericUpDown)control;
                    numericUpDown.Value = 0;
                    break;
            }
        }        
    }

    OriginalEl autor Andrey Krasilnikov

Dejar respuesta

Please enter your comment!
Please enter your name here