Works like a charm. Thanks Jacob.

-----Original Message-----
From: The DOTNET list will be retired 7/1/02
[mailto:[EMAIL PROTECTED]] On Behalf Of Jacob Grass
Sent: Wednesday, June 05, 2002 4:50 PM
To: [EMAIL PROTECTED]
Subject: Re: [DOTNET] Locate WinForm control recursively


Dan-

This works for me:

    Public Function FindControl(ByVal Parent As Control, ByVal Target As
String) As Control
        Dim FoundIt As Control = Nothing
        Dim i As Integer = 0

        Do Until Not FoundIt Is Nothing Or i > Parent.Controls.Count - 1
            If Parent.Controls(i).Name = Target Then
                FoundIt = Parent.Controls(i)
            Else
                If Parent.Controls(i).Controls.Count > 0 Then
                    FoundIt = FindControl(Parent.Controls(i), Target)
                End If
                i += 1
            End If
        Loop
        Return FoundIt
    End Function

Jacob A. Grass


-----Original Message-----
From: Dan Souk [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, June 05, 2002 4:35 PM
To: [EMAIL PROTECTED]
Subject: [DOTNET] Locate WinForm control recursively


Hi folks,
I need to locate a control within a WinForm that may be located a few
layers deep into the container hierarchy. The answer seems to be
recursion, since there is no FindControl method on the standard Windows
Form class.

Problem I'm having is that this code can't retrieve a control past the
second layer. If the control is buried at level three, this code can
find it but the return value is Nothing.

Would really appreciate any help.

Thanks.


    Function FindControl(ByVal Parent As System.Windows.Forms.Control,
ByVal strCtlName As String) As System.Windows.Forms.Control
        Dim tmp As System.Windows.Forms.Control
        Dim blnFound As Boolean
        Try
            For Each tmp In Parent.Controls
                blnFound = (tmp.Name = strCtlName)
                If blnFound Then
                    Exit For
                Else
                    tmp = FindControl(tmp, strCtlName)
                End If
            Next
            Return tmp
        Catch ex As System.Exception
            DisplayExceptionInfo(ex)
        End Try
    End Function


Form1
  TabControl
    TabPage
      Grid1   -- FindControl gets to this, but can't pass it back


------------------------
Dan Souk
Finna Technologies, Inc.
2410 Lindsay Ct
West Chicago, IL 60185
+1-630-762-8257 phone
+1-630-762-8258 fax
http://www.finnatech.com

You can read messages from the DOTNET archive, unsubscribe from DOTNET,
or
subscribe to other DevelopMentor lists at http://discuss.develop.com.

You can read messages from the DOTNET archive, unsubscribe from DOTNET,
or
subscribe to other DevelopMentor lists at http://discuss.develop.com.

You can read messages from the DOTNET archive, unsubscribe from DOTNET, or
subscribe to other DevelopMentor lists at http://discuss.develop.com.

Reply via email to