Solved

Find Custom Controls By Name

Posted on 2014-01-03
4
280 Views
Last Modified: 2014-01-03
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
Comment
Question by:G Scott
  • 2
  • 2
4 Comments
 
LVL 52

Expert Comment

by:Carl Tawn
ID: 39753741
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
 
LVL 1

Author Comment

by:G Scott
ID: 39753859
My intellisense does this:
Error
0
 
LVL 52

Accepted Solution

by:
Carl Tawn earned 500 total points
ID: 39753870
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
 
LVL 1

Author Closing Comment

by:G Scott
ID: 39753896
Thank you, Carl.  Your safer method worked perfectly!!
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Since .Net 2.0, Visual Basic has made it easy to create a splash screen and set it via the "Splash Screen" drop down in the Project Properties.  A splash screen set in this manner is automatically created, displayed and closed by the framework itsel…
Microsoft Reports are based on a report definition, which is an XML file that describes data and layout for the report, with a different extension. You can create a client-side report definition language (*.rdlc) file with Visual Studio, and build g…
This Micro Tutorial hows how you can integrate  Mac OSX to a Windows Active Directory Domain. Apple has made it easy to allow users to bind their macs to a windows domain with relative ease. The following video show how to bind OSX Mavericks to …
Both in life and business – not all partnerships are created equal. As the demand for cloud services increases, so do the number of self-proclaimed cloud partners. Asking the right questions up front in the partnership, will enable both parties …

895 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now