Dopo la funzione
ParentRoot eccone un'altra analoga che ci permette di verificare se un controllo è "
figlio" di un determinato contenitore.
Anche in questo caso sarà possibile mettere dei "paletti" alla ricerca impostando la proprietà ParentStop al controllo limite entro il quale effettuare la ricerca.
''' <summary>
''' Restituisce il primo controllo nella gerarchia di appartenenza
''' </summary>
''' <param name="ctr">Controllo di riferimento</param>
''' <param name="theParent">Controllo su cui effettuare la verifica</param>
''' <param name="ParentStop">Opzionale. Controllo "limite" entro il quale effettuare la ricerca</param>
''' <returns></returns>
''' <remarks></remarks>
Private Function ParentIn(ByVal ctr As Control, ByVal theParent As Control, Optional ByVal ParentStop As Control = Nothing) As Boolean
'**********************************************************************
' Func: ParentRoot (Creazione: SB 20080827 Mod: )
' Desc: Verifica se un controllo appartiene ad un determinato contenitore
' Par : ctr Controllo da cui partire
' theParent Controllo di verifica
' [ParentStop]Opzionale. Controllo "limite" entro il quale effettuare la ricerca
' Ret : Boolean True se ctr è contenuto in theParent
' False se ctr NON è contenuto in theParent
' Note:
'**********************************************************************
Do While Not ctr Is Nothing
If ctr.Parent Is ParentStop OrElse TypeOf (ctr.Parent) Is Form Then Return False
If ctr.Parent Is theParent Then Return True
ctr = ctr.Parent
Loop
Return False
End Function
Ed ecco qui la consueta funzione ricorsiva:
''' <summary>
''' Restituisce il primo controllo nella gerarchia di appartenenza
''' </summary>
''' <param name="ctr">Controllo di riferimento</param>
''' <param name="theParent">Controllo su cui effettuare la verifica</param>
''' <param name="ParentStop">Opzionale. Controllo "limite" entro il quale effettuare la ricerca</param>
''' <returns></returns>
''' <remarks></remarks>
Private Function ParentIn2(ByVal ctr As Control, ByVal theParent As Control, Optional ByVal ParentStop As Control = Nothing) As Boolean
'**********************************************************************
' Func: ParentRoot (Creazione: SB 20080827 Mod: )
' Desc: Verifica se un controllo appartiene ad un determinato contenitore
' Par : ctr Controllo da cui partire
' theParent Controllo di verifica
' [ParentStop]Opzionale. Controllo "limite" entro il quale effettuare la ricerca
' Ret : Boolean True se ctr è contenuto in theParent
' False se ctr NON è contenuto in theParent
' Note:
'**********************************************************************
If ctr Is Nothing OrElse ctr.Parent Is ParentStop Then Return False
If TypeOf (ctr.Parent) Is Form Then Return False
If ctr.Parent Is theParent Then Return True
If ctr.Parent Is ParentStop Then Return False
Return ParentIn(ctr.Parent, theParent)
End Function