public void AddBefore(Row row, Row rowBefore) { if (row != null && row.ParentNode == null) { if (rowBefore == null) { AddAtEnd(row); } else { if (row.Parent == m_Parent && rowBefore.Parent == m_Parent) { Graphics GFX = m_Parent.CreateGraphics(); row.RecalcHeight(GFX); RowNode ToAdd = new RowNode(m_Parent, row); ToAdd.PreviousNode = rowBefore.ParentNode.PreviousNode; ToAdd.NextNode = rowBefore.ParentNode; if (ToAdd.PreviousNode != null) { ToAdd.PreviousNode.NextNode = ToAdd; } ToAdd.NextNode.PreviousNode = ToAdd; if (rnHead == null || rowBefore.ParentNode == rnHead) { rnHead = ToAdd; } if (rnTail == null) { rnTail = ToAdd; } GFX.Dispose(); m_nTotalRowHeight += row.Height; m_nCount++; } } } }