Cambiar propiedad de texto de todos los elementos en forma

Tengo muchos botones y tags en mi formulario c #. Tengo un botón que cambia las propiedades de texto de todos los botones y tags (botón de cambio de idioma). ¿Tengo que escribir todos los elementos en el clic del evento del botón o hay un método que escanea todos los elementos de control de formulario y cambia sus propiedades de texto?

Hay muchos otros controles que contienen tags o botones. Por ejemplo, se agrega una etiqueta al control de un panel y cuando itero los controles de formulario, no puedo acceder a esta etiqueta. Quiero cambiar las propiedades de texto de todos los elementos a la vez.

Gracias.

foreach (Control objCtrl in yourFormName.Controls) { if (objCtrl is Label) { // Assign Some Text } if (objCtrl is Button) { // Assign some text } 

}

Si ocurre un error CS0120, cambie yourFormName.Controls a this.Controls ;

Suponiendo que ASP.NET's interfaz ITextControl ASP.NET's (funciona de manera similar para la Text-Property ASP.NET's ITextControl -Controls):

 var text = "Hello World"; var allTextControls = this.Controls.OfType(); foreach(ITextControl txt in allTextControls) txt.Text = text; 

http://msdn.microsoft.com/en-us/library/bb360913.aspx

Edición : puede convertirla fácilmente en una extensión (por ejemplo, ASP.NET, para Winforms reemplazar ITextControl con Control):

 public static class ControlExtensions { public static void SetControlChildText(this Control rootControl, String text, bool recursive) { var allChildTextControls = rootControl.Controls.OfType(); foreach (ITextControl txt in allChildTextControls) txt.Text = text; if (recursive) { foreach (Control child in rootControl.Controls) child.SetControlChildText(text, true); } } } 

Ahora puedes llamarlo por ejemplo de esta manera:

 protected void Page_Load(object sender, EventArgs e) { Page.SetControlChildText("Hello World", true); } 

Esto aplicará el texto dado en cada control secundario que implemente ITextControl (como Label o TextBox).

Si es winforms , debería leer sobre la localizing su aplicación aquí:

Tutorial: localización de formularios de Windows

Creo que si está utilizando javascript, simplemente puede ir a través del DOM y modificar los textos de los botones y las tags. Usando jQuery esto será muy simple.

Para una aplicación web, puedes hacer esto fácilmente con jQuery. Eche un vistazo a esto: http://api.jquery.com/category/selectors/

 $('label').each(function(){this.value = 'something else';}); 

Para Winforms, puedes usar esto:

 foreach (var c in Controls.OfType()) c.Text = "TextBox Text"; foreach (var c in Controls.OfType 

Pero estoy de acuerdo con @ionden, deberías considerar localizar tu aplicación.

Hay una propiedad de Controls que contiene todos los controles de su formulario. Puedes iterar sobre ello:

 foreach(var control in Controls) { var button = control as Button; if(button != null) button.Text = Translate(button.Text); else { var label = control as Label; if(label != null) label .Text = Translate(label .Text); } } 
  foreach( Control ctlparent in this.Controls) { if(ctlparent is Panel or ctlparent is GroupBox) { foreach(Control ctl in ctlparent.Controls) { if(ctl is Label or ctl is Button) { ctl.Text= newtext; } }} 

Esto funcionará.