private void dgv_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) { DataGridViewRow row = Rows[e.RowIndex]; Behavior behavior = row.DataBoundItem as Behavior; // Color switch (Columns[e.ColumnIndex].Name) { case "BehaviorColor": e.CellStyle.BackColor = _behaviorColorAssigner.GetBehaviorColor(behavior); break; case "DurationCount": if (string.IsNullOrEmpty(e.Value as string)) { e.Value = behavior.Type == Behavior.BehaviorType.State ? FormatMilliseconds(0L) : 0.ToString(); } break; } }
public void AddRunEvent(RunEvent runEvent) { Monitor.Enter(this); UpdateLastStateRectangle(runEvent.TimeTracked); double rectangleTop = _lastStateRectangle.IsEmpty ? _marginInRow : _lastStateRectangle.Y; ColoredRectangle newRectangle = new ColoredRectangle( _behaviorColorAssigner.GetBehaviorColor(runEvent.Behavior), _lastPositionInRow, rectangleTop, 0, _rectangleHeight); if (runEvent.Behavior.Type == Behavior.BehaviorType.Instant) { // Half margin for Instant events newRectangle.Y -= _marginInRow / 2.0; newRectangle.Height += _marginInRow; newRectangle.X -= InstantEventWidthPercentage / 2.0; newRectangle.Width += InstantEventWidthPercentage; _instantRectangles.Add(newRectangle); } else { if (!_lastStateRectangle.IsEmpty) { _oldStateRectangles.Add(_lastStateRectangle); } _lastStateRectangle = newRectangle; } InvalidateRectangle(newRectangle); Monitor.Exit(this); }