Ich weiß, das ist ein alter Beitrag, aber das ist, wie ich gerade dieses Problem gelöst habe. Wie unter dem Titel "Wie deaktiviere ich alle Steuerelemente in ASP.NET-Seite?" Ich habe Reflection benutzt, um das zu erreichen. Es wird auf allen Steuerelementtypen funktionieren, die über die Eigenschaft Enabled verfügen. Rufen Sie einfach DisableControls auf, indem Sie das übergeordnete Steuerelement (z. B. Form) übergeben.
C#:
private void DisableControls(System.Web.UI.Control control)
{
foreach (System.Web.UI.Control c in control.Controls)
{
// Get the Enabled property by reflection.
Type type = c.GetType();
PropertyInfo prop = type.GetProperty("Enabled");
// Set it to False to disable the control.
if (prop != null)
{
prop.SetValue(c, false, null);
}
// Recurse into child controls.
if (c.Controls.Count > 0)
{
this.DisableControls(c);
}
}
}
VB:
Private Sub DisableControls(control As System.Web.UI.Control)
For Each c As System.Web.UI.Control In control.Controls
' Get the Enabled property by reflection.
Dim type As Type = c.GetType
Dim prop As PropertyInfo = type.GetProperty("Enabled")
' Set it to False to disable the control.
If Not prop Is Nothing Then
prop.SetValue(c, False, Nothing)
End If
' Recurse into child controls.
If c.Controls.Count > 0 Then
Me.DisableControls(c)
End If
Next
End Sub
Danke! Ich wollte alle Tasten/Textfelder/Comboboxes auf einem Formular mit Ausnahme einer deaktivieren, und das Deaktivieren eines Bedienfelds deaktiviert alle Steuerelemente, so dass es nicht funktioniert. Mit Ihrer Methode konnte ich nur die Steuerelemente ausschalten, die ich wollte, aber nicht die Panels. – ajs410