We help IT Professionals succeed at work.
Get Started

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

86 Views
Last Modified: 2018-10-18
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

Open in new window


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

Open in new window

Comment
Watch Question
Senior .Net Consultant
CERTIFIED EXPERT
Top Expert 2016
Commented:
This problem has been solved!
Unlock 1 Answer and 3 Comments.
See Answer
Why Experts Exchange?

Experts Exchange always has the answer, or at the least points me in the correct direction! It is like having another employee that is extremely experienced.

Jim Murphy
Programmer at Smart IT Solutions

When asked, what has been your best career decision?

Deciding to stick with EE.

Mohamed Asif
Technical Department Head

Being involved with EE helped me to grow personally and professionally.

Carl Webster
CTP, Sr Infrastructure Consultant
Ask ANY Question

Connect with Certified Experts to gain insight and support on specific technology challenges including:

  • Troubleshooting
  • Research
  • Professional Opinions
Did You Know?

We've partnered with two important charities to provide clean water and computer science education to those who need it most. READ MORE