Wenn ich mich richtig erinnere, deaktivieren Sie das Panel [mit der aktivierten Eigenschaft], wenn das Kontrollkästchen deaktiviert ist, wird dies die Elemente im Panel deaktivieren. Sie müssen dann nicht alle Elemente innerhalb des Bereichs einzeln deaktivieren. Wenn Sie das Bedienfeld erneut aktivieren, werden die untergeordneten Steuerelemente wieder aktiviert.
myPanel.Enabled = false; //Child controls disabled
myPanel.Enabled = true; //Child controls enabled
Sie könnten auch jede Steuerung innerhalb der Platte durchlaufen mit:
foreach(Control control in myPanel)
{
//Assume for the purpose of demonstration
//that each control within myPanel has an
//"Enabled" property
control.Enabled = myPanel.Enabled;
}
Dadurch wird die Eigenschaft enabled jeder Kontrolle innerhalb der Platte, dass der Platte übereinstimmen setzen würde - wirklich, ist dieser Überschuss zu Anforderung und ist daher nicht wirklich wünschenswert. Ich habe diese Methode nur zu Demonstrationszwecken bereitgestellt.
Edit: Dies könnte [zum Beispiel] erweitert werden, indem Robs Entwurf für eine Benutzersteuerung, die Sie eine Eigenschaft zu Ihrer Benutzersteuerung hinzufügen könnten die Controls-Auflistung des Panels aussetzen:
public Control[] Controls
{
return controlPanel.Controls;
}
Dies würde im Wesentlichen ermöglichen die Änderung der Steuerelemente des Steuerelements außerhalb des Benutzersteuerelements und erfordern nicht, dass die Steuerelemente in der Steuerfelddefinition innerhalb des Benutzersteuerelements zugewiesen werden.
Schöne, saubere Lösung, erwähnenswert, dass Sie nicht brauchen * Ajax für Ihre Lösung zu arbeiten, würde es nur ein wenig benutzerfreundlicher machen. – BenAlabaster
Ich werde ständig beschuldigt, meinen Nutzern gegenüber zu nett zu sein. –
+1 obwohl für ein gutes Beispiel für die Umsetzung dieser – BenAlabaster