private void SetDropPosition(Point pt)
{
TreeNodeAdv node = GetNodeAt(pt);
_dropPosition.Node = node;
if (node != null)
{
Rectangle first = _rowLayout.GetRowBounds(FirstVisibleRow);
Rectangle bounds = _rowLayout.GetRowBounds(node.Row);
float pos = (pt.Y + first.Y - ColumnHeaderHeight - bounds.Y) / (float)bounds.Height;
if (pos < TopEdgeSensivity)
_dropPosition.Position = NodePosition.Before;
else if (pos > (1 - BottomEdgeSensivity))
_dropPosition.Position = NodePosition.After;
else
_dropPosition.Position = NodePosition.Inside;
}
}