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