¿Cómo borrar el texto de todos los cuadros de texto en el formulario?

private void CleanForm() { foreach (var c in this.Controls) { if (c is TextBox) { ((TextBox)c).Text = String.Empty; } } } 

Este método anterior no funciona y los controles no se borran. Comstack bien, pero no hace nada.

¿Algunas ideas?

Me gusta lambda 🙂

  private void ClearTextBoxes() { Action func = null; func = (controls) => { foreach (Control control in controls) if (control is TextBox) (control as TextBox).Clear(); else func(control.Controls); }; func(Controls); } 

¡Buena suerte!

Tuvimos un problema como este unas semanas antes. Si establece un punto de interrupción y lo examina a this.Controls . this.Controls , el problema revela su naturaleza: debe recurrir a través de todos los controles secundarios.

El código podría verse así:

 private void CleanForm() { traverseControlsAndSetTextEmpty(this); } private void traverseControlsAndSetTextEmpty(Control control) { foreach(var c in control.Controls) { if (c is TextBox) ((TextBox)c).Text = String.Empty; traverseControlsAndSetTextEmpty(c); } } 

Es probable que sus cuadros de texto estén dentro de paneles u otros contenedores, y no directamente dentro del formulario.

Debe atravesar recursivamente la colección Controls de cada control secundario.

 private void CleanForm(Control ctrl) { foreach (var c in ctrl.Controls) { if (c is TextBox) { ((TextBox)c).Text = String.Empty; } if( c.Controls.Count > 0) { CleanForm(c); } } } 

Cuando inicialmente llamas a ClearForm, pasa esto o página (supongo que eso es ‘esto’).

Y esto para borrar todos los controles en forma de cuadro de texto, checkbox, radioButton

puedes agregar diferentes tipos que quieras ..

 private void ClearTextBoxes(Control control) { foreach (Control c in control.Controls) { if (c is TextBox) { ((TextBox)c).Clear(); } if (c.HasChildren) { ClearTextBoxes(c); } if (c is CheckBox) { ((CheckBox)c).Checked = false; } if (c is RadioButton) { ((RadioButton)c).Checked = false; } } } 

Mejoré / arreglé mi método de extensión.

 public static class ControlsExtensions { public static void ClearControls(this Control frm) { foreach (Control control in frm.Controls) { if (control is TextBox) { control.ResetText(); } if (control.Controls.Count > 0) { control.ClearControls(); } } } } 

Prueba esto:

 var t = Form.Controls.OfType().AsEnumerable(); foreach (TextBox item in t) { item.Text = ""; } 

Solo usa

 private void button2_Click(object sender, EventArgs e) { textBox1.Text = ""; }