1 Event Handler for multiple DateTimePickers - Not working for me???
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
you need to add 1 AddHandler for each controls and I only see 1.
Also, you are running for troubles if you declare a variable the same name as a control (Dim DateTimePicker As New DateTimePicker).
Ryan Ragan
ASKER
Thank you for responding, do you have any suggestions on handling an unknown # of DateTimePickers.valuechanged that are dynamically loaded at runtime? All I want is to show the timespan between two datetimepickers when the value is changed. The issue is each employee gets a start and end time so a schedule can be mass produced. Thank you for any other suggestions,
Also, you are running for troubles if you declare a variable the same name as a control (Dim DateTimePicker As New DateTimePicker).