Trouver un contrôle avec un nom spécifique:
var arr = this.Controls.Where(c => c.Name == "Name");
var c = arr.FirstOrDefault();
ou recherche dans les contrôles de type spécifié:
var arr = this.Controls.OfType<Label>();
var c = arr.FirstOrDefault();
Edit:
si vous avez un tableau de noms de contrôle vous peut les trouver:
var names = new[] { "C1", "C2", "C3" };
// search for specified names only within textboxes
var controls = this.Controls
.OfType<TextBox>()
.Where(c => names.Contains(c.Name));
// put the search result into a Dictionary<TextBox, string>
var dic = controls.ToDictionary(k => k, v => v.Text);
(tout ci-dessus nécessite .NET 3.5)
Si vous ne l'avez pas, vous pouvez le faire suivant:
Control[] controls = this.Controls.Find("MyControl1");
if(controls.Lenght == 1) // 0 means not found, more - there are several controls with the same name
{
TextBox control = controls[0] as TextBox;
if(control != null)
{
control.Text = "Hello";
}
}
_Controls_ n'a pas de méthode _Where_ pour moi – ErTR