VB Zeit-input, einen besseren Weg, es zu tun?
Arbeiten auf ein handliches Programm für meinen Chef bei der Arbeit, wie ein Sommer-Projekt in den zwischen den Semestern sowohl das Leben leichter machen für Sie, und zu üben und meine Fähigkeiten verbessern. Absicht ist es, die es Ihr erlauben, schnell und einfach berechnen die Stunden und Minuten die person arbeitete. Das Formular selbst hat eine Reihe von text-Boxen für die Clock in und Clock out-Zeit-für jeden Tag der Woche. Derzeit versucht es zu konvertieren, die txtbox text in eine Date-variable, dann .Subtrahieren()'s der Anfang vom Ende und speichert es in einer durch die gesamten Variablen, die angezeigt wird, am unteren Rand des Formulars. Ich kann mir nicht helfen, aber denke, es gibt einen besseren Weg zu gehen über das tun dies, und ich bin mir absolut sicher, dass wir mit den untenstehenden code-block, der 21-mal (7 Tage, 3 Schichten) ist ineffizient.
Dim StartTime As Date
Dim EndTime As Date
Dim Worked As System.TimeSpan
Dim WorkedTotal As System.TimeSpan
If chkFirst.Checked = True Then
StartTime = CDate(txtMonStart.Text)
EndTime = CDate(txtMonEnd.Text)
EndTime = EndTime.AddHours(12)
Worked = EndTime.Subtract(StartTime)
lblMonWork.Text = Worked.ToString()
WorkedTotal += Worked
Derzeit funktioniert es, meistens. Hat der Benutzer zur Eingabe des ":" in der Zeit-input, und wenn die Summe mehr als 24 Stunden, es zeigt eine Tag-Spalte (40 h 12 min in der Woche zeigt, wie 1.16:12). Ich würde gerne beseitigen diese beiden ungeplanten features und lassen meine überprüfung der Eingaben stattfinden, wenn die änderungen den Fokus auf ein anderes Feld. Eine änderung bgcolor deuten wäre eine ungültige Eingabe.
Irgendwelche guten Ideen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Anstatt
TextBox
für die Eingabe, verwenden SieDateTimePicker
ändern Sie einfach dieFormat
EigenschaftTime
.Griff die
Validating
Veranstaltung derDateTimePicker
und wenn es ungültig setzen Sie einfache.Cancel = False
, so können Sie nicht die änderungen zu speichern, es sei denn, es ist gültig. Oder, wenn Sie wollen, dass Sie in der Lage zu verlassen dieDateTimePicker
und ändern Sie einfach die Farbe, nur Griff dieValueChanged
Veranstaltung statt.Bezüglich Ihrer code-Beispiel, ich habe nicht wirklich sah die Logik der it, aber anstatt den gleichen code 21-mal, bewegen Sie einfach den code in eine separate Funktion und rufen Sie dann diese Funktion mit dem start-und end-Zeiten als Parameter auf und es können wieder die workedtime als es Wert zurückgeben.
Ich bin mir nicht sicher, was die UI aussieht, aber wenn Sie wiederholt die start-und Endzeit input-Steuerung mehrmals, wie gut es sein könnte, lohnt ein Blick auf die Erstellung Ihrer eigenen usercontrol, dass enthalten kann, die jeweils die start-und end-Zeit-Steuerelemente, und dann könnte man die Validierung werden im inneren, dass Benutzer die Kontrolle, so dass Sie nicht haben, um viele der event-Handler etc.