示例#1
0
        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);
        }