protected override void OnMouseMove(MouseEventArgs e) { base.OnMouseMove(e); DynamicListRow rowFromPoint = this.GetRowFromPoint(e.Y); if (this.rowAtMousePosition != rowFromPoint) { this.rowAtMousePosition = rowFromPoint; base.Invalidate(); } if (rowFromPoint != null) { int columnIndexFromPoint = this.GetColumnIndexFromPoint(e.X); if (columnIndexFromPoint >= 0) { DynamicListItem item = rowFromPoint[columnIndexFromPoint]; if (this.itemAtMousePosition != item) { if (this.itemAtMousePosition != null) { this.OnLeaveItem(this.itemAtMousePosition); } base.ResetMouseEventArgs(); this.itemAtMousePosition = item; if (item != null) { if (item.Cursor != null) { this.Cursor = item.Cursor; } item.OnMouseEnter(this); } } if (item != null) { item.OnMouseMove(new DynamicListMouseEventArgs(this, e)); } } } }
public Point GetPositionFromRow(DynamicListRow row) { int y = -this.scrollOffset; foreach (DynamicListRow row2 in this.Rows) { if (row2 == row) { return new Point(0, y); } y += row2.Height + this.lineMarginY; } throw new ArgumentException("The row in not in this list!"); }
protected override void OnMouseLeave(EventArgs e) { this.rowAtMousePosition = null; if (this.itemAtMousePosition != null) { this.OnLeaveItem(this.itemAtMousePosition); this.itemAtMousePosition = null; } base.OnMouseLeave(e); }
internal DynamicListItem(DynamicListRow row) { this.row = row; }