troubleshooting Question

1 Event Handler for multiple DateTimePickers - Not working for me???

Avatar of Ryan Ragan
Ryan RaganFlag for United States of America asked on
Visual Basic.NET.NET Programming
3 Comments1 Solution87 ViewsLast Modified:
Good morning, I have a Windows Form (vb.net) and I am dynamically creating multiple DateTimePicker controls. The number of controls depends on how many employees are currently registered in the database. So for each employee they get a start and end time control for their schedule. I have read multiple articles and solutions and I am simply stuck. I need 1 handler to fire anytime a timepicker value is changed. Once the value is changed, the textbox next to it will show the timespan in hours that will be added to the schedule...

Any help would be great
Dim DateTimePicker As New DateTimePicker
                DateTimePicker.Name = "Start" & counter
                DateTimePicker.Size = New Size(80, 25)
                DateTimePicker.Location = New Point(Combo2.Location.X + 135, Combo2.Location.Y)
                DateTimePicker.ShowUpDown = True
                DateTimePicker.Value = "1/1/2018 06:00 AM"
                DateTimePicker.Format = DateTimePickerFormat.Custom
                DateTimePicker.CustomFormat = "hh:mm tt"
                Me.Panel2.Controls.Add(DateTimePicker)

                Dim DateTimePick As New DateTimePicker
                DateTimePick.Name = "End" & counter
                DateTimePick.Size = New Size(80, 25)
                DateTimePick.Location = New Point(DateTimePicker.Location.X + 90, DateTimePicker.Location.Y)
                DateTimePick.ShowUpDown = True
                DateTimePick.Value = "1/1/2018 12:00 PM"
                DateTimePick.Format = DateTimePickerFormat.Custom
                DateTimePick.CustomFormat = "hh:mm tt"
                Me.Panel2.Controls.Add(DateTimePick)
AddHandler DateTimePick.ValueChanged, AddressOf DateTimePicker2_ValueChanged

Private Sub DateTimePicker2_ValueChanged(ByVal sender As Object, ByVal e As EventArgs)
        Try
            Dim cControl As Control
            Dim counter As Int32 = 0
            Dim cControl2 As Control
            For Each cControl In Me.Panel2.Controls
                If TypeOf cControl Is DateTimePicker Then
                    counter += 1
                    If cControl.Name = "Start" & counter Then
                        Dim StartTime As DateTime = cControl.Text
                        If cControl.Name = "End" & counter Then
                            Dim EndTime As DateTime = cControl.Text
                            Dim Duration As TimeSpan = EndTime - StartTime
                            Dim Duration2 = Duration.TotalHours
                            For Each cControl2 In Me.Panel2.Controls
                                If TypeOf cControl2 Is TextBox And cControl2.Name = "Hours" & counter Then
                                    cControl2.Text = Duration2
                                End If
                            Next
                        End If
                    End If
                End If
            Next
        Catch ex As System.Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub
ASKER CERTIFIED SOLUTION
Éric Moreau
Senior .Net Consultant
Join our community to see this answer!
Unlock 1 Answer and 3 Comments.
Start Free Trial
Learn from the best

Network and collaborate with thousands of CTOs, CISOs, and IT Pros rooting for you and your success.

Andrew Hancock - VMware vExpert
See if this solution works for you by signing up for a 7 day free trial.
Unlock 1 Answer and 3 Comments.
Try for 7 days

”The time we save is the biggest benefit of E-E to our team. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange.

-Mike Kapnisakis, Warner Bros