private void DrawRow(PaintEventArgs e, ref DrawContext context, int row, Rectangle rowRect)
{
TreeNodeAdv node = RowMap[row];
context.DrawSelection = DrawSelectionMode.None;
context.CurrentEditorOwner = _currentEditorOwner;
if (DragMode)
{
if ((_dropPosition.Node == node) && _dropPosition.Position == NodePosition.Inside && HighlightDropPosition)
context.DrawSelection = DrawSelectionMode.Active;
}
else
{
if (node.IsSelected && Focused)
context.DrawSelection = DrawSelectionMode.Active;
else if (node.IsSelected && !Focused && !HideSelection)
context.DrawSelection = DrawSelectionMode.Inactive;
}
context.DrawFocus = Focused && CurrentNode == node;
if (FullRowSelect)
{
context.DrawFocus = false;
if (context.DrawSelection == DrawSelectionMode.Active || context.DrawSelection == DrawSelectionMode.Inactive)
{
Rectangle focusRect = new Rectangle(OffsetX, rowRect.Y, ClientRectangle.Width, rowRect.Height);
if (context.DrawSelection == DrawSelectionMode.Active)
{
e.Graphics.FillRectangle(SystemBrushes.Highlight, focusRect);
context.DrawSelection = DrawSelectionMode.FullRowSelect;
}
else
{
e.Graphics.FillRectangle(SystemBrushes.InactiveBorder, focusRect);
context.DrawSelection = DrawSelectionMode.None;
}
}
}
if ((GridLineStyle & GridLineStyle.Horizontal) == GridLineStyle.Horizontal)
e.Graphics.DrawLine(SystemPens.InactiveBorder, 0, rowRect.Bottom, e.Graphics.ClipBounds.Right, rowRect.Bottom);
if (ShowLines)
DrawLines(e.Graphics, node, rowRect);
DrawNode(node, context);
}