Je veux pouvoir faire passer un ensemble de contrôles d'un formulaire en lecture seule et revenir en arrière en cliquant sur un bouton. Existe-t-il un moyen de les parcourir en boucle ? this.Controls
peut-être......
Merci !
Je veux pouvoir faire passer un ensemble de contrôles d'un formulaire en lecture seule et revenir en arrière en cliquant sur un bouton. Existe-t-il un moyen de les parcourir en boucle ? this.Controls
peut-être......
Merci !
Si vous voulez mettre TOUS les contrôles en lecture seule, vous pouvez faire quelque chose comme :
foreach(Control currentControl in this.Controls)
{
currentControl.Enabled = false;
}
Si ce que vous voulez vraiment faire, c'est définir CERTAINES des commandes en lecture seule, je vous suggère de conserver une liste des commandes concernées, puis de faire un ForEach sur CETTE liste, plutôt que sur toutes les commandes.
Les activer/désactiver est facile, voir la réponse de GWLIosa.
Cependant, tous les contrôles ne disposent pas d'une propriété de lecture seule. Vous pourriez utiliser quelque chose comme :
foreach (Control c in this.Controls)
{
if (c is TextBox)
(c as TextBox).Readonly = newValue;
else if (c is ListBox)
(c as ListBox).Readonly = newValue;
// etc
}
Personnellement, je placerais tous les contrôles (et sous-contrôles) que je souhaite influencer dans un fichier de type Panel
- alors il suffit de changer l'état de l'unique Panel
. Cela signifie que vous ne devez pas commencer à stocker les anciennes valeurs (pour les remettre en place - vous ne voudrez peut-être pas supposer qu'elles ont toutes été activées, par exemple).
Je vous suggère d'utiliser la propriété Enabled suggérée par GWLlosa, mais si vous voulez ou devez utiliser la propriété ReadOnly, essayez ceci :
foreach (Control ctrl in this.Controls)
{
Type t = ctrl.GetType();
PropertyInfo propInfo = t.GetProperty("ReadOnly");
if (propInfo != null)
propInfo.SetValue(ctrl, true, null);
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.