Um die Bedienung der Zeitmessung für den User etwas übersichtlicher
zu gestalten, kann man den Text des StartStopButtons dem Zustand
der Zeitmessung, die dem jeweils gewählten Projekt zugeordnet ist,
anpassen.
'Projektdaten-Datagridview-Einstellungen ergänzen
Dim WithEvents dgv As New DataGridView With _
{.Parent = Me, .Top = 50, .Width = 200, _
.DataSource = bs, .MultiSelect = False}
Dim WithEvents btnReset As New Button _
With {.Parent = Me, .Text = "Reset", .Left = 210} .
.
Routine für die Belegung der Text-Eigenschaft des Buttons
Private Sub StartStopButtontext()
If bs.Position < 0 Then Exit Sub
'Aktuell ausgewähltes Projekt
Dim row As DataRow = DirectCast(bs(bs.Position), DataRowView).Row
Dim projectid As Integer = CInt(row.Item("ID"))
Dim projectindex As Integer = TimeTable_IndexOf(projectid)
If projectindex = -1 Then
'Aktuell ist keine Messung für die Projektzeile gestartet
btnStartStop.Text = "Start (" & CStr(projectid) & ")"
btnReset.Enabled = False
Else
'Es läuft bereits eine Messung für die aktuelle Projektzeile
btnStartStop.Text = "Stop (" & CStr(projectid) & ")"
btnReset.Enabled = true
End If
End Sub .
.
Anpassung des Button an die jeweils selektierte Projektzeile
bei Änderung der Auswahl im Datengrid:
Private Sub dgv_SelectionChanged(sender As Object, _
e As System.EventArgs) Handles dgv.SelectionChanged
StartStopButtontext()
End Sub Zusätzlich muss am Ende der Event-Routine "ButtonStartStop_Click"
auch die Routine "StartStopButtontext" gerufen werden.
Der Handler für den Reset-Button:
Private Sub btnReset_Click(sender As Object, _
e As System.EventArgs) Handles btnReset.Click
If bs.Position < 0 Then Exit Sub
'Aktuell ausgewähltes Projekt
Dim row As DataRow = DirectCast(bs(bs.Position), DataRowView).Row
Dim projectid As Integer = CInt(row.Item("ID"))
Dim projectindex As Integer = TimeTable_IndexOf(projectid)
If projectindex = -1 Then Exit Sub
timetable.Rows(projectindex)("Start") = Now 'Reset der Startzeit
End Sub |