Control.HasChildren Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene un valor que indica si el control contiene uno o más controles secundarios.
public:
property bool HasChildren { bool get(); };
[System.ComponentModel.Browsable(false)]
public bool HasChildren { get; }
[<System.ComponentModel.Browsable(false)>]
member this.HasChildren : bool
Public ReadOnly Property HasChildren As Boolean
Valor de propiedad
true
si el control contiene uno o más controles secundarios; en caso contrario, false
.
- Atributos
Ejemplos
En el ejemplo de código siguiente se establecen los BackColor controles y ForeColor en los colores predeterminados del sistema. El código se llama recursivamente si el control tiene controles secundarios. Este ejemplo de código requiere que tenga un Form control con al menos un control secundario; sin embargo, un control de contenedor secundario, como o PanelGroupBox, con sus propios controles secundarios demostraría mejor la recursividad.
// Reset all the controls to the user's default Control color.
private:
void ResetAllControlsBackColor( Control^ control )
{
control->BackColor = SystemColors::Control;
control->ForeColor = SystemColors::ControlText;
if ( control->HasChildren )
{
// Recursively call this method for each child control.
IEnumerator^ myEnum = control->Controls->GetEnumerator();
while ( myEnum->MoveNext() )
{
Control^ childControl = safe_cast<Control^>(myEnum->Current);
ResetAllControlsBackColor( childControl );
}
}
}
// Reset all the controls to the user's default Control color.
private void ResetAllControlsBackColor(Control control)
{
control.BackColor = SystemColors.Control;
control.ForeColor = SystemColors.ControlText;
if(control.HasChildren)
{
// Recursively call this method for each child control.
foreach(Control childControl in control.Controls)
{
ResetAllControlsBackColor(childControl);
}
}
}
' Reset all the controls to the user's default Control color.
Private Sub ResetAllControlsBackColor(control As Control)
control.BackColor = SystemColors.Control
control.ForeColor = SystemColors.ControlText
If control.HasChildren Then
' Recursively call this method for each child control.
Dim childControl As Control
For Each childControl In control.Controls
ResetAllControlsBackColor(childControl)
Next childControl
End If
End Sub
Comentarios
Si la Controls colección tiene un Count valor mayor que cero, la HasChildren propiedad devolverá true
. El acceso a la HasChildren propiedad no fuerza la creación de un Control.ControlCollection objeto si el control no tiene elementos secundarios, por lo que hacer referencia a esta propiedad puede proporcionar una ventaja de rendimiento al caminar por un árbol de controles.