|
Imports ColoredGrid.MeasureDataSet
Public Class frmColoredGrid
Private Sub MenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) _
Handles SaveToolStripMenuItem.Click, ReLoadToolStripMenuItem.Click, _
RandomMeasureToolStripMenuItem.Click
Select Case True
Case sender Is RandomMeasureToolStripMenuItem
Dim T As DateTime = GetRow(Of MeasureRow)( _
MeasureBindingSource( _
MeasureBindingSource.Count - 1)).TimeStamp
Dim Rnd As New Random(Environment.TickCount)
For I As Integer = 0 To 19
T += TimeSpan.FromSeconds(50)
Me.MeasureDataSet.Measure.AddMeasureRow(Rnd.Next(0, 100), T)
Next
Case sender Is ReLoadToolStripMenuItem
Me.MeasureDataSet.Clear()
Me.MeasureDataSet.ReadXml("Measure.Dataset")
Case sender Is SaveToolStripMenuItem
Me.MeasureDataGridView.EndEdit()
Me.MeasureBindingSource.EndEdit()
Me.MeasureDataSet.WriteXml("Measure.Dataset")
End Select
End Sub
Private Sub MeasureDataGridView_RowPrePaint(ByVal sender As Object, _
ByVal e As DataGridViewRowPrePaintEventArgs) _
Handles MeasureDataGridView.RowPrePaint
If e.RowIndex < 0 OrElse _
e.RowIndex >= MeasureBindingSource.Count Then Return
Dim Rw As DataGridViewRow = Me.MeasureDataGridView.Rows(e.RowIndex)
Dim Col As Color
Select Case GetRow(Of MeasureRow) _
(MeasureBindingSource(e.RowIndex)).Temperature
Case Is < 15
Col = Color.LightBlue
Case Is < 70
Col = Color.LightGreen
Case Is < 85
Col = Color.Orange
Case Else
Col = Color.OrangeRed
End Select
If Not AssignSave(Rw.DefaultCellStyle.BackColor, Col) Then Return
Col = Color.FromArgb((Col.R * 2) \ 3, (Col.G * 2) \ 3, (Col.B * 2) \ 3)
AssignSave(Rw.DefaultCellStyle.SelectionBackColor, Col)
End Sub
End Class
Public Module Helpers
Public Function GetRow(Of T As DataRow)(ByVal Current As Object) As T
Return DirectCast(DirectCast(Current, DataRowView).Row, T)
End Function
Public Function AssignSave(Of T, T2 As T)(ByRef Dest As T, _
ByVal Src As T2) As Boolean
If Object.Equals(Dest, Src) Then Return False
Dest = Src
Return True
End Function
End Module |