Servus!
Aktuell habe ich ein Datagrid, dass mit n-Werten befüllt ist. Diese Werte prüfe ich auf Gültigkeit und markiere im Anschluss die Zellen farblich.
Wenn ich mir jedoch meinen Code ansehe, bin ich mir sicher, dass man hierfür eine elegantere Lösung finden kann, als durch die Case-Selection. Ich würde es gerne als Funktion auslagern. Hat jemand eine Idee wie man das geschickterweise angehen kann?
Wie man sieht, letztlich nur eine Code/Case-Wiederholung in dem sich nur der Funktionsaufruf unterscheidet.
Danke!
Aktuell habe ich ein Datagrid, dass mit n-Werten befüllt ist. Diese Werte prüfe ich auf Gültigkeit und markiere im Anschluss die Zellen farblich.
Wenn ich mir jedoch meinen Code ansehe, bin ich mir sicher, dass man hierfür eine elegantere Lösung finden kann, als durch die Case-Selection. Ich würde es gerne als Funktion auslagern. Hat jemand eine Idee wie man das geschickterweise angehen kann?
VB.NET-Quellcode
- Private Sub Check_Cell()
- Dim Zelle As DataGridViewCell
- For Each Zelle In DataGrid.SelectedCells
- Select Case Zelle.ColumnIndex
- Case 0
- If SID(CStr(Zelle.Value)) = True Then
- DataGrid.Rows(Zelle.RowIndex).Cells(Zelle.ColumnIndex).Style.ForeColor = Color.Green
- Else
- DataGrid.Rows(Zelle.RowIndex).Cells(Zelle.ColumnIndex).Style.ForeColor = Color.Red
- End If
- Case 3
- If ORE(CStr(Zelle.Value)) = True Then
- DataGrid.Rows(Zelle.RowIndex).Cells(Zelle.ColumnIndex).Style.ForeColor = Color.Green
- Else
- DataGrid.Rows(Zelle.RowIndex).Cells(Zelle.ColumnIndex).Style.ForeColor = Color.Red
- End If
- Case 5
- If KOS(CStr(Zelle.Value), "STRING") = True Then
- DataGrid.Rows(Zelle.RowIndex).Cells(Zelle.ColumnIndex).Style.ForeColor = Color.Green
- Else
- DataGrid.Rows(Zelle.RowIndex).Cells(Zelle.ColumnIndex).Style.ForeColor = Color.Red
- End If
- Case 6
- If PID(CStr(Zelle.Value)) = True Then
- DataGrid.Rows(Zelle.RowIndex).Cells(Zelle.ColumnIndex).Style.ForeColor = Color.Green
- Else
- DataGrid.Rows(Zelle.RowIndex).Cells(Zelle.ColumnIndex).Style.ForeColor = Color.Red
- End If
- Case 7
- If KID(CStr(Zelle.Value)) = True Then
- DataGrid.Rows(Zelle.RowIndex).Cells(Zelle.ColumnIndex).Style.ForeColor = Color.Green
- Else
- DataGrid.Rows(Zelle.RowIndex).Cells(Zelle.ColumnIndex).Style.ForeColor = Color.Red
- End If
- Case 8
- If STID(CStr(Zelle.Value)) = True Then
- DataGrid.Rows(Zelle.RowIndex).Cells(Zelle.ColumnIndex).Style.ForeColor = Color.Green
- Else
- DataGrid.Rows(Zelle.RowIndex).Cells(Zelle.ColumnIndex).Style.ForeColor = Color.Red
- End If
- End Select
- DataGrid.ClearSelection()
- Next
- End Sub
Wie man sieht, letztlich nur eine Code/Case-Wiederholung in dem sich nur der Funktionsaufruf unterscheidet.
Danke!
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „hate_regex“ ()