• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 288
  • Last Modified:

Find Custom Controls By Name

So I have created a simple custom control that is made up of a number of labels.  I have given the control some properties so I can assign values to those labels.  I am filling a datatable from SQL and now I want to loop through that datatable and set values to the labels of my custom controls from this dt.  I have done this kind of thing in the past quite easily, however, I can't seem to figure this out with the custom control.

Here is my code for the custom control:
Public Class ctClock
    
    Private myColor As Color
    Private txtMold As String
    Private txtTool As String
    Private txtJCIPart As String
    Private txtCustPart As String
    Private txtOrder As String
    Private txtNumbers As String
    Private txtStatus As String
    Private txtName As String

    Property wholecolor() As Color
        Get
            Return myColor
        End Get
        Set(ByVal value As Color)
            myColor = value
            Me.BackColor = myColor
        End Set
    End Property

    Property Mold() As String
        Get
            Return txtMold
        End Get
        Set(ByVal value As String)
            txtMold = value
            lblMold.Text = txtMold
        End Set
    End Property
    Property Tool() As String
        Get
            Return txtTool
        End Get
        Set(ByVal value As String)
            txtTool = value
            lblTool.Text = txtTool
        End Set
    End Property

    Property JCIPart() As String
        Get
            Return txtJCIPart
        End Get
        Set(ByVal value As String)
            txtJCIPart = value
            lblJCIPart.Text = txtJCIPart
        End Set
    End Property

    Property CustPart() As String
        Get
            Return txtCustPart
        End Get
        Set(ByVal value As String)
            txtCustPart = value
            lblCustPart.Text = txtCustPart
        End Set
    End Property


    Property Order() As String
        Get
            Return txtOrder
        End Get
        Set(ByVal value As String)
            txtOrder = value
            lblOrder.Text = txtOrder
        End Set
    End Property

    Property Numbers() As String
        Get
            Return txtNumbers
        End Get
        Set(ByVal value As String)
            txtNumbers = value
            lblNumbers.Text = txtNumbers
        End Set
    End Property

    Property Status() As String
        Get
            Return txtStatus
        End Get
        Set(ByVal value As String)
            txtStatus = value
            lblStatus.Text = txtStatus
        End Set
    End Property

End Class

Open in new window


And here is what I am trying to do to assign values to my properties:

 Dim i As Integer = 1
        For Each row As DataRow In dt.Rows
            Dim controlName As String
            controlName = "CtClock" & i
            Me.Controls(controlName).Mold = (row("Press").ToString)
            Me.Controls(controlName).Tool = (row("Tool").ToString)
            i = i + 1
        Next row

Open in new window


I have never done a custom control (as you can probably tell from my example - ripped right from the MSDN site).  Thanks for any help you can give me on this.
0
G Scott
Asked:
G Scott
  • 2
  • 2
1 Solution
 
Carl TawnSystems and Integration DeveloperCommented:
What you have should work ok, as long as your control isn't sat inside another container. Are you getting any errors from your code?
0
 
G ScottAuthor Commented:
My intellisense does this:
Error
0
 
Carl TawnSystems and Integration DeveloperCommented:
Ah, OK. So it has found it, but you need to cast it to the correct type:
DirectCast(Me.Controls(controlName), ctClock).Mold = row("Press").ToString()

Open in new window

Or, to be a bit more safe:
Dim obj As ctClock = DirectCast(Me.Controls(controlName), ctClock)
If Not obj Is Nothing Then
    obj.Mold = row("Press").ToString()
End If

Open in new window

0
 
G ScottAuthor Commented:
Thank you, Carl.  Your safer method worked perfectly!!
0

Featured Post

Hire Technology Freelancers with Gigs

Work with freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely, and get projects done right.

  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now